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

 
TarasBY :
"MessageBox() nedir?" sorusunu görmek GUESS'e kalmıştır. - MetaEditor'da Ctrl+F1 ile.

bunlar nüanslar .. ve şimdi danışmanı bitirirdim .. :))
 

devrilmeyi bilmeyen var mı?

Yoldaşlar, söyleyin bana, siparişler rollover ile yeniden açıldığında, dur ve al değerleri için kaymalar mümkün mü? ve devirden sonra açılış fiyatı ile stop arasındaki fark stop seviyesinden daha az olacaksa stop nasıl ayarlanacak?

Genel olarak, görevim aşağıdaki gibidir. Açık bir piyasa emri var, bunun rollover ile açık olup olmadığını belirlemeli ve varsa bir önceki kapatılmış emrin biletini almalısınız. Birisi bir arama algoritması önerebilir mi? Şimdilik bunu yapıyorum:

1. İlk açık siparişi seçiyorum.
2. Açılış saatini izliyorum, eğer 23:40'tan 00:20'ye kadar açıldıysa, o zaman bu siparişi daha da kontrol etmeye devam ediyorum (Her itfaiyeci için 40 dakika boyunca bir pencere aldım, ancak teoride onu alabilirsin 23:50 - 23:59)
3. Biletini hatırlıyorum, dur ve al
4. Yorumların takas kelimesini içerdiği ve döviz çiftlerinin eşleştiği tarihteki tüm kapalı emirleri kontrol ederim.

5. Duraklar ve alımlardaki verileri karşılaştırırım, eğer eşleşirlerse, o zaman burada istenen emir çiftidir, değilse, adım 1'e dönerim

 

lütfen bana bunun ne anlama geldiğini söyle

süre(doğru)

değiştirici komut dosyasında, EA'ya ne koydum?

ve neden bu garip kontrol

if (cmd==OP_BUY || cmd==OP_SEL) ??

Sadece açık bir pozisyon olup olmadığını kontrol etmek daha iyi değil mi?

 int My_modify ()
 {
//      bool   result;
//      double stop_loss,take_profit,point,bid,ask, lotsize;
//      int    cmd, total, error, spread;
//      string message;
//----
   total= OrdersTotal ();

//----
   for ( int i= 0 ; i<total; i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         bid= MarketInfo(OrderSymbol(),MODE_BID);
         ask= MarketInfo(OrderSymbol(),MODE_ASK);
         spread=MarketInfo(OrderSymbol(),MODE_SPREAD);     
         //---- buy or sell orders are considered
         if (cmd==OP_BUY || cmd==OP_SELL)
          {
             //---- modify first market order
             while ( true )
             {
                 if (cmd==OP_BUY){
                         string type = "buy" ;
                         if (OrderStopLoss()!= 0 )stop_loss=OrderStopLoss();
                         else stop_loss=OrderOpenPrice()-StopLoss*point;
                         if (OrderTakeProfit()!= 0 )take_profit=OrderTakeProfit();
                         else take_profit=OrderOpenPrice()+TakeProfit*point;
                }
                     
                 else {
                        type = "sell" ;
                         if (OrderStopLoss()!= 0 )stop_loss=OrderStopLoss();
                         else stop_loss=OrderOpenPrice()+StopLoss*point;
                         if (OrderTakeProfit()!= 0 )take_profit=OrderTakeProfit();
                         else take_profit=OrderOpenPrice()-TakeProfit*point;
                }   
                result=OrderModify(OrderTicket(), OrderOpenPrice(), stop_loss, take_profit, 0 , CLR_NONE );
                 if (result!= true ) { error= GetLastError (); Print ( "LastError = " ,error);}
                 else {error= 0 ;}
                 if (error== 135 ) RefreshRates();
                 else break ;
              }
                 if (error== 0 ){
                         //message=message+"Ордер #"+OrderTicket()+" - "+type+" - "+DoubleToStr(OrderLots(), 2)+" успешно модифицирован.\n";
                        }
                         else {
                                 if (error == 130 ){ string error_desc = " - Неправильные стопы" ;} else error_desc = "" ;
                                 if (error != 1 )
                        message=message+ "Ошибка модификации ордера #" +OrderTicket()+ " - " +type+ " - " +DoubleToStr(OrderLots(), 2 )+ ". " +error_desc+ " \n" ;
                        }

               //---- print modified order (it still selected after modify)
              OrderPrint();
               continue ;             
           }
        }
       else { Print ( "Error when order select " , GetLastError ()); break ;}
     }
         int ret= MessageBox (message, NULL , MB_OK );
         if (ret== IDOK ) return ( 0 );
//----
   return ( 0 );
  }
 
lottamer :

bunlar nüanslar .. ve şimdi danışmanı bitirirdim .. :))

Arabayı "Kucher'in burnunun" arkasına taşımak istiyorsunuz. Düşük düzeyde bir dil yeterliliği ile pratik yapmaya başlamanız gerekir:

stratejinize yakın, hazır bir çalışma danışmanı alın ve onu isteklerinize uyacak şekilde yükseltin - bu şekilde eylemlerinizi çabucak anlayacak ve kavrayacaksınız ("Astar" ı okumak için açık bir isteksizlikle).

İyi şanlar!

PS AXIOM : "Antrenörler arabalara binmez!!!"

 
TarasBY :

Arabayı "Kucher'in burnunun" arkasına taşımak istiyorsunuz. Düşük düzeyde bir dil yeterliliği ile pratik yapmaya başlamanız gerekir:

stratejinize yakın, çalışmaya hazır bir danışman alın ve onu İstek Listenize uyacak şekilde modernleştirin - bu, eylemlerinizi daha hızlı anlamanıza ve anlamanıza yardımcı olacaktır.

İyi şanlar!

PS AXIOM : "Antrenörler arabalara binmez!!!"


Bunu pratikte yapıyorum... Diğer Uzman Danışmanlara, senaryolara bakıyorum... ve ihtiyacım olanı yerleştiriyorum :))
 
2012.12.07 16:14:28 try141 GOLD,H1: OrderSend işlevi için bilinmeyen sembol adı 0

çünkü her şey güzeldi. terminale mi yoksa DC'ye mi bağlı? Yoksa kodda bir yanlışlık mı var?
 
gheka :
2012.12.07 16:14:28 try141 GOLD,H1: OrderSend işlevi için bilinmeyen sembol adı 0

çünkü her şey güzeldi. terminale mi yoksa DC'ye mi bağlı? Yoksa kodda bir yanlışlık mı var?

Kod olmadan cevap vermek zor... Örneğin, daha önce bir DC'de XAUUSD altın senedi vardı ve bu açıkça sipariş gönderme işlevinde yazılmıştı. Aynı DC'de, altın kodu Altın'dır, bu nedenle açılış hatası: sipariş açma işlevi için bilinmeyen bir sembol adı 0... Veya kodda bir şey değiştirilmiş... (değiştirilmiş). Terminale bağlı değildir - görevlerinizi yerine getirir ve bu kadar.

 
Desead :

Yoldaşlar, söyleyin bana, siparişler rollover ile yeniden açıldığında, dur ve al değerleri için kaymalar mümkün mü? ve devirden sonra açılış fiyatı ile stop arasındaki fark stop seviyesinden daha az olacaksa stop nasıl ayarlanacak?

Genel olarak, görevim aşağıdaki gibidir. Açık bir piyasa emri var, bunun rollover ile açık olup olmadığını belirlemeli ve varsa bir önceki kapatılmış emrin biletini almalısınız. Birisi bir arama algoritması önerebilir mi? Şimdilik bunu yapıyorum:

1. İlk açık siparişi seçiyorum.
2. Açılış saatini izliyorum, eğer 23:40'tan 00:20'ye kadar açıldıysa, bu siparişi daha da kontrol etmeye devam ediyorum (Her itfaiyeci için 40 dakika boyunca bir pencere aldım, ancak teorik olarak alabilirsiniz. 23:50 - 23:59)
3. Biletini hatırlıyorum, dur ve al
4. Yorumların takas kelimesini içerdiği ve döviz çiftlerinin eşleştiği tarihteki tüm kapalı emirleri kontrol ederim.
5. Duraklar ve alımlardaki verileri karşılaştırırım, eğer eşleşirlerse, o zaman burada istenen emir çiftidir, değilse, adım 1'e dönerim


Rollover sırasında duraklar değişmez. Stoploss ve TakeProfit önceden ayarlanmış bekleyen emirlerdir, sadece sunucu istatistiklerinde başka bir emirle ilişkilendirileceklerdir.

Sorununuzu çözmek için bkz. https://www.mql5.com/ru/articles/1390 ve https://www.mql5.com/ru/articles/1404 . bence, bu makalelerin bazılarında sizin durumunuza özel bir kullanım örneği var (tam hatırlamıyorum, uzun zamandır okudum, ancak materyalin yine de faydalı olacağını düşünüyorum).

 
gheka :
2012.12.07 16:14:28 try141 GOLD,H1: OrderSend işlevi için bilinmeyen sembol adı 0

çünkü her şey güzeldi. terminale mi yoksa DC'ye mi bağlı? Yoksa kodda bir yanlışlık mı var?

Google çevirmeni kullanın. try141 GOLD,H1: OrderSend işlevi için bilinmeyen sembol adı 0, programın bir siparişi 141 kez açmaya çalıştığı, ancak 0 adındaki sembolü bilmediği için başarısız olduğu anlamına gelir. 0'ı Symbol() veya belirli bir adla değiştirin . sipariş açmak istediğiniz enstrüman sembolü.
 
Sipariş verildiğinde yazılanlara (bilet numarası ve sipariş türü ) benzer satırlara yorum yazmak bir şekilde mümkün müdür?
Neden: