Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 849

 
gince :

Neden yanlış nesneyi gösteriyor? Solda https://docs.mql4.com/ru/constants/objectconstants/arrows code 3'ü gösteren bir Üçgen olmalı ve Wingdings code 241'in en üstüne bir ok görünür.

Program kodu ( ObjectSet(objName, OBJPROP_ARROWCODE , 3 ); )

Daha dikkatli okuyun. Detayları hatırlamıyorum ama kod 3 dahil değil. Kanatlar.


not; İşte notta ne var

DRAW_ARROW stiline sahip çizgiler için ok değeri ayarlanırken özel göstergelerde özel ok kodları kullanılamaz .

 
Bu bir danışman.
AlexeyVik :

Daha dikkatli okuyun. Detayları hatırlamıyorum ama kod 3 dahil değil. Kanatlar.


not; İşte notta ne var

DRAW_ARROW stiline sahip çizgiler için ok değeri ayarlanırken özel göstergelerde özel ok kodları kullanılamaz .

Bu bir Uzman Danışmandır ve bir işlev içerir.

 
gince :
Bu bir danışman.
Önemli değil.
 
AlexeyVik :
Önemli değil.

Ne zaman mümkün olur?

 
gince :
Bu bir danışman.

Aynı Uzman Danışman ikinci işleve sahiptir. Her şey yolunda. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

 void f_ArrowOpen(
                   datetime openTime,
                   int action,
                   double lots,
                   string symb,
                   double openPrice
                  )
{
   color c;
   string op= "" ;
       if (action== 1 )
      {
         c=Blue;
         op= "BUY" ;
      }
       else if (action==- 1 )
      {
         c=Red;
         op= "SELL" ;
      }
   // order open arrow name:    #76840865 buy 0.05 EURUSDc at 1.30416

       string objName = StringConcatenate ( "#" , TimeToString (openTime, TIME_DATE | TIME_MINUTES ), " " , op, " " , lots, " " , symb, " at " , openPrice);
       ObjectCreate (objName, OBJ_ARROW , 0 , openTime, openPrice);
      ObjectSet(objName, OBJPROP_COLOR , c);
      ObjectSet(objName, OBJPROP_ARROWCODE , 1 );
      ObjectSetText(objName, "LOT: " + DoubleToStr(lots, 2 ));
}
//+------------------------------------------------------------------+ 
void f_ArrowClose(
                   datetime closeTime,
                   int action,           //íàïðàâëåíèå
                   double lots,
                   string symb,
                   double openPrice,
                   double closePrice,
                   double profit)
{
       color c;
       string op= "" ;
       if (action== 1 )
      {
         if (profit> 0 )c=Blue; else if (profit< 0 )c=Red; else c=Yellow;
         op= "cl_BUY" ;
      }
       else if (action==- 1 )
      {
         if (profit> 0 )c=Blue; else if (profit< 0 )c=Red; else c=Yellow;
         op= "cl_SELL" ;
      }
      
       string objName = StringConcatenate ( "#" , closeTime, " " , op, " " , lots, " " , symb, " at " , openPrice, " close at " , closePrice);
       ObjectCreate (objName, OBJ_ARROW , 0 , closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR , c);
      ObjectSet(objName, OBJPROP_ARROWCODE , 3 );
       //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}
 
Lütfen bana söyle. EA, her çubuktaki gösterge sinyallerine göre işlem yapar. Ve her tikte koşulların nasıl kontrol edileceği. Göstergedeki koşullar şunlardır:
int limit, i;
int counted_bars=IndicatorCounted(); // Zaten kaç çubuk hesaplandı
if (counted_bars<0) return(-1); // Olası bir hatayı kontrol et
if (counted_bars>0) counted_bars--; // Son hesaplanan çubuğu yeniden hesapla
limit=bars-counted_bars; // Son hesaplanan çubuktan başlayarak
// - 1 - ========================== Blok sonu ================ =====================

// - 2 - ===================== Geçmişteki göstergeyi görüntüleme ================= =====
for(i = limit; i >= 0; i--)
{
FastMA = iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i);
SlowMA = iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i);

}
// - 2 - ========================== Blok sonu ================ =====================

// - 3 - ===================== Sinyal ==================== ====================
//if (LastBar != Time[0]) // Bar başına bir kez
//{
hepsi bu mu?
 
gince :

Aynı Uzman Danışman ikinci işleve sahiptir. Her şey yolunda. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

Bir şeyi doğru anlamadığınıza sizi ikna edeceğimi mi sanıyorsunuz? Zamanınızı deneyerek ve yazılanları anlamaya çalışarak harcamak daha iyidir.
 

Herkese iyi günler.

Söyle bana, önceki açık pozisyon kırmızıdaysa, emrin uygulanmaması için OrderSend'den önce hangi koşulu eklemeliyim? Ortalama almamak için.

 
Craft :

Herkese iyi günler.

Söyleyin bana, bir önceki açık pozisyon kırmızı ise emrin uygulanmaması için OrderSend'den önce hangi koşulu eklemelisiniz? Ortalama almamak için.

Genel olarak, kontrol böyle

OrderSelect (bilet,SELECT_BY_TICKET);

if(SiparişKar()<0) { }


Ve parantez içinde istediğinizi koyabilirsiniz. Örneğin, "martin" yönteminin çalışması için bunu kullanıyorum)

 
İyi akşamlar! Danışmanın nasıl çalıştığını söyleyebilir misiniz? Doğrudan ana Başlat işlevine geri dönüş yazarsam, EA işini bitirir mi? Şimdiden teşekkürler!