[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 325

 
sergeev :

kapatmaya çalışmadan önce OrderSelect'i çalıştırın ve OrderCloseTime'ı kontrol edin. Zaten 0'dan büyükse, sipariş kapatılır.


Select'im var ve OrderCloseTime'ı nereye koyacağım? Select'ten sonra mı yoksa CloseOrder() işlevinde mi?

Doc'a baktı. Geçmiş Seçimim yok, sadece Ticaret. Bu yüzden, bu Geçmiş Seçimini kapanış koşulundan sonra ve CloseOrder()'dan önce koymaya çalışacağım. Teşekkür ederim!

 
Seçimin içinde, sembol ve sihir (varsa) için filtrelerden sonra, yani, sıfıra eşit değilse (sipariş kapalıysa) kapanış zamanı sırasını kontrol ederiz, sonra tekrar kapanmasını yasaklarız.
 
FAQ :
Seçimin içinde, sembol ve sihir (varsa) için filtrelerden sonra, yani, sıfıra eşit değilse (sipariş kapalıysa) kapanış zamanı sırasını kontrol ederiz, sonra tekrar kapanmasını yasaklarız.


Teşekkür ederim! Bu yüzden daha yükseği deneyeceğim!

Burada, onu yerleştirmeye çalıştım, demoya sürdüm, ancak daha fazla hata ve farklı olan bir şey çıkıyor. Doki'den bu kodu kullanarak önce ocaktan soruyorum:

   if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==true)
    {
     datetime ctm= OrderOpenTime ();
     int       ticket= OrderTicket ();
     if (ctm> 0 ) Print ( "Время открытия ордера № " ,ticket, " " ,ctm);
     ctm= OrderCloseTime ();
     if (ctm> 0 ) Print ( "Время закрытия ордера № " ,ticket, " " ,ctm);
    }
   else
     Print ( "OrderSelect() вернул ошибку " , GetLastError ());

Burada Select Trade, sembole göre kontroller, sihir... ve... emir türü arasına eklenecek ekstralar. Belki de datetime cmt ve int bileti başlangıcın başında sunulmalıdır? Ve baskı başka hatalar yazıyor.

Ve bir kapanış koşulu ekleyin:

 if (ctm == 0 ) {CloseOrder( OrderTicket (), OrderLots (),Bid,slip, Yellow ); return ( 0 );} else continue ;

Bana yardım et lütfen!

 

Merhaba, lütfen söyle

tp ve sl ile hemen emir açmak değil, tp ve sl emrini açtıktan sonra modifiye ederek sipariş vermek gerekmektedir.

şöyle yaptı:

bilet=OrderSend(Symbol(),cmd,lots, NormalizeDouble (open,Digits),5*_pipsMultiplyer,_orderComment,GenerateMagicNumber(magicNumber,Symbol(),Period()),0,SpringGreen);
{
OrderSelect(bilet,SELECT_BY_TICKET);
}
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Mavi);
dönüş(0);

}


ne ve neden anlamıyorum

Sağ?

 
RMX13 :

Merhaba, lütfen söyle

tp ve sl ile hemen sipariş açmak değil, tp ve sl'yi siparişi açtıktan sonra değiştirerek tp ve sl vermek gerekir.

şöyle yaptı:

bilet=OrderSend(Symbol(),cmd,lots,NormalizeDouble(open,Digits),5*_pipsMultiplyer,_orderComment,GenerateMagicNumber(magicNumber,Symbol(),Period()),0,SpringGreen);
{
OrderSelect(bilet,SELECT_BY_TICKET);
}
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Mavi);
dönüş(0);

}


ne ve neden anlamıyorum

Sağ?



Ve artık anlamıyorum! Kodu sunmak için SRC kullanın, yukarıya bakın?
 
int orderOpen( int cmd, double open, int stopLossPips, int takeProfitPips, int magicNumber){       
       double sl= 0 , tp= 0 ;
       if (stopLossPips> 0 ){
         stopLossPips = MathMax (stopLossPips, MarketInfo ( Symbol (),MODE_STOPLEVEL)+ 3 *_pipsMultiplyer);
      }
       if (takeProfitPips> 0 ){
         takeProfitPips = MathMax (takeProfitPips, MarketInfo ( Symbol (),MODE_STOPLEVEL)+ 3 *_pipsMultiplyer);
      }
       int ticket=- 1 ;
       if (_doTrade){        
         double lots  = OrderLotSize();
         if (lots>= MarketInfo ( Symbol (), MODE_MINLOT)){          
             //wait context
             if (TradeIsBusy() < 0 ) {
                 return (- 1 ); 
            }
             if (cmd==OP_BUYSTOP || cmd==OP_BUY || cmd==OP_SELLLIMIT){
               RefreshRates ();
               if (cmd==OP_BUY){
                  open=Ask;
               }
               if (stopLossPips> 0 ){
                  sl= NormalizeDouble (open-stopLossPips* Point , Digits );
               }
               if (takeProfitPips> 0 ){
                  tp= NormalizeDouble (open+takeProfitPips* Point , Digits );
               }
               ticket= OrderSend ( Symbol (),cmd,lots, NormalizeDouble (open, Digits ), 5 *_pipsMultiplyer,sl,tp,_orderComment,GenerateMagicNumber(magicNumber, Symbol (), Period ()), 0 , SpringGreen );              
            } else {
               RefreshRates ();
               if (cmd==OP_SELL){
                  open=Bid;
               }
               if (stopLossPips> 0 ){
                  sl= NormalizeDouble (open+stopLossPips* Point , Digits );
               }
               if (takeProfitPips> 0 ){
                  tp= NormalizeDouble (open-takeProfitPips* Point , Digits );
               }
               ticket= OrderSend ( Symbol (),cmd,lots, NormalizeDouble (open, Digits ), 5 *_pipsMultiplyer,sl,tp,_orderComment,GenerateMagicNumber(magicNumber, Symbol (), Period ()), 0 , Red );
            }
Yeni başlayanlar için, bu parça bir sipariş açmaktan sorumlu mu?
 
hepsi anladı
 
borilunad :


Teşekkür ederim! Bu yüzden daha yükseği deneyeceğim!

Burada, onu yerleştirmeye çalıştım, demoya sürdüm, ancak daha fazla hata ve farklı olan bir şey çıkıyor. Doki'den bu kodu kullanarak önce ocaktan soruyorum:

Burada Select Trade, sembole göre kontroller, sihir... ve... emir türü arasına eklenecek ekstralar. Belki de datetime cmt ve int bileti başlangıcın başında sunulmalıdır? Ve baskı başka hatalar yazıyor.

Ve bir kapanış koşulu ekleyin:

Bana yardım et lütfen!


Eeeh, dedikleri gibi: "çalışma öğrencisi" (c)

 for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--){
   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES){
       if ( OrderSymbol ()!= Symbol ()){ continue ;} // фильтр по символу(если не наш символ, то пропускаем)
       if ( OrderMagicNumber ()!=magik){ continue ;} // фильтр по магику
       if ( OrderCloseTime ()!= 0 ){ continue ;} // фильтр по времени закрытия (если не=0 то ордер уже закрыт)
       if ( OrderType ()<=OP_SELL){ //закрытие для рыночных ордеров
         OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), MarketInfo ( OrderSymbol (),MODE_SPREAD), CLR_NONE );
      } else { // закрытие для отложенных ордеров
         OrderDelete ( OrderTicket ());
      }
   }
}

gereksizleri sil (yorum yap)

 
               ticket= OrderSend ( Symbol (),cmd,lots, NormalizeDouble (open, Digits ), 5 *_pipsMultiplyer,_orderComment,GenerateMagicNumber(magicNumber, Symbol (), Period ()), 0 , Red );
             OrderSelect (ticket,SELECT_BY_TICKET);
             OrderModify ( OrderTicket (), OrderOpenPrice (),sl,tp, 0 );

Bir emir açan ve zararı durdur ve kâr elde eden bir kod parçası

terminal hata veriyor: EURUSD,M30: OrderSend hatası 130

EURUSD,M30: OrderModify işlevi için geçersiz bilet

EURUSD,M30: OrderModify hatası 4051

EURUSD,M30: OrderSend #4051 bid:1.23674000 ask:1.23683000 Open:1.23674000 SL:1.2423 TP:1.2283 MODE_STOPLEVEL:0.00000000 LOT:0.01000000 hatasıyla başarısız oldu

Sorun nedir, önerebilir misiniz?


 
FAQ :


Eeeh, dedikleri gibi: "çalışma öğrencisi" (c)

gereksizleri sil (yorum yap)


Çok teşekkürler! Hayatım boyunca öğreniyorum! Genel olarak, çalışmak çalışmaktan daha ilginçtir. Şimdi uyum sağlamaya çalışacağım, gerçekten koddaki sırayı değiştirmek istemiyorum. Herhangi bir zamanda, piyasanın davranışındaki değişikliklere bağlı olarak koşulları değiştirir veya eklerim. Size en iyisi ve iyi geceler!