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

 
Notter :

Tünaydın,

Lütfen bana grafiğe nasıl etiket koyacağımı söyle. Örneğin sipariş açılmadı ama en azından hangi noktada açılması gerektiğini grafik üzerinde görmek için.

Teşekkür ederim.

Bunun gibi bir şey

 #include <stderror.mqh>

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int Err;
//----
       if (...........) //покупаем
          { 
          Err= OrderSend (..................);
             if (Err< 0 )
                SetArrow( 159 , Blue, "ошибка открытия № " + GetLastError (),Time[ 0 ],Open[ 0 ], 2 );
          }
       if (...........) //продаем
          { 
          Err= OrderSend (..................);
             if (Err< 0 )
                SetArrow( 159 , Red, "ошибка открытия № " + GetLastError (),Time[ 0 ],Open[ 0 ], 2 );
          }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow( int cd, color cl,
               string nm= "" , datetime t1= 0 , double p1= 0 , int sz= 0 ) {
   if (nm== "" ) nm=DoubleToStr(Time[ 0 ], 0 );
   if (t1<= 0 ) t1=Time[ 0 ];
   if (p1<= 0 ) p1=Bid;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_ARROW , 0 , 0 , 0 );
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE , cd);
  ObjectSet(nm, OBJPROP_COLOR     , cl);
  ObjectSet(nm, OBJPROP_WIDTH     , sz);
}
 
dertop :


Evet kusura bakmayın kafam karıştı foruma ilk yazdığımda. Önce kopyala-yapıştır sonra kalemle karar verip kafam karıştı...ama yukarıdaki örnekte herşey doğru..

MA1>MA2 ve MA1<MA3 ve MA3<MA4


Bir sonraki konuya göz atın
 
Vinin :


Burada bir tuhaflık var

MA1>MA2 ve MA2>MA3 ve ardından MA1<MA3

Ayrıca, yeterli

Evet, gerçekten de birbirleriyle çelişiyorlar. Sadece her şeye bakmadım! Yazarın daha "zor hatalara" gitmesi için uzun bir yolu var!
 

Soru. Bu durumla ilk kez karşılaşmıyorum:

Her onay işaretinde, takip eden işlev veya örneğin başabaş işlevi çağrılırsa, bir hata ortaya çıkar - 1. Belgelere göre bu ne anlama geliyor:

ERR_NO_RESULT   1       Нет ошибки, но результат неизвестен

Eğer start fonksiyonunda açık olarak çağrılmamışsa, yani sadece parametreli fonksiyonu start içine direkt olarak girmemişsinizdir, fakat onu her çubukta çağırmışsınızdır, yani. tek tek değil, o zaman hata yok ...

şöyle demek istiyorum:

 int start()
{
   MovingStopLossToBU();
// Что-то дальше делаем..

Nedenmiş?

Ve genel olarak, nasıl daha iyi uygulanır? Her tik için kaynak açısından maliyetli olacak mı?

 

Всем добрый день.

Yardımınıza ihtiyaçım var. neyin yanlış olduğunu anlamıyorum

if (OrderStopLoss() != NormalizeDouble(t6,5))

{

a=10;

}

OrderStopLoss()= 1.3017 ve NormalizeDouble(t6,5)=1.3017 koşulunun hala sağlanması, yani a=10. Ve yapılmamalıdır.

Nedeni ne olabilir?

 
hoz :

Soru. Bu durumla ilk kez karşılaşmıyorum:

Her onay işaretinde, takip eden işlev veya örneğin başabaş işlevi çağrılırsa, bir hata ortaya çıkar - 1. Belgelere göre bu ne anlama geliyor:

Eğer start fonksiyonunda açık olarak çağrılmamışsa, yani sadece parametreli fonksiyonu start içine direkt olarak girmemişsinizdir, fakat onu her çubukta çağırmışsınızdır, yani. tek tek değil, o zaman hata yok ...

şöyle demek istiyorum:

Nedenmiş?

Ve genel olarak, nasıl daha iyi uygulanır? Her tik için kaynak açısından maliyetli olacak mı?

Sana barlar değil, çok pipler tavsiye ederim. Gerekirse, bunun için kaynaklar kullanılır. Ve zaten var olan bir değişikliğin fiyatı tekrarlandığında "hata değil" hatası ortaya çıkıyor. Bu nedenle, zaten size en başta tavsiye ettiğim gibi adım adım yapmanız gerekiyor.
 
hoz :

Soru. Bu durumla ilk kez karşılaşmıyorum:

Her onay işaretinde, takip eden işlev veya örneğin başabaş işlevi çağrılırsa, bir hata ortaya çıkar - 1. Belgelere göre bu ne anlama geliyor:

Eğer start fonksiyonunda açık olarak çağrılmamışsa, yani sadece parametreli fonksiyonu start içine direkt olarak girmemişsinizdir, fakat onu her çubukta çağırmışsınızdır, yani. tek tek değil, o zaman hata yok ...

şöyle demek istiyorum:

Nedenmiş?

Ve genel olarak, bu nasıl daha yetkin bir şekilde uygulanır? Her tik için kaynak açısından maliyetli olacak mı?

Thrall, SL'yi aynı seviyeye taşımaya çalışır. Bir çek eklemeniz gerekiyor, trolün seviyesi mevcut SL'den farklı olmalıdır.

 
valeryk :

Thrall, SL'yi aynı seviyeye taşımaya çalışır. Bir çek eklemeniz gerekiyor, trolün seviyesi mevcut SL'den farklı olmalıdır.



Yani bu dava için bir kontrolüm var:

 if (ND(OrderStopLoss() - priceBU * pt) != 0.0 )
{
  if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0, CLR_NONE ))
  {
    Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());
  }

}
Dur - yeni durak (kullanılan) sıfıra eşit değilse... o zaman değiştiririz... Değilse, değiştirmeyiz. Yani bu nasıl oluyor anlamıyorum. Sonuçta, geçmişin ve yeni durağın eşitliği için bir kontrole ihtiyacımız olduğunu anlıyorum ve yaptım.
 

Merhaba ! Lütfen bana söyle . 1 T/P altındaki ilk ve son siparişi nasıl değiştirebilirim teşekkürler

gi_304 = CountTrades();

   g_price_212 = 0;

   double ld_24 = 0;

   for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

      OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {

            g_price_212 += OrderOpenPrice() * OrderLots();

            ld_24 += OrderLots();

         }

      }

   }

   if (gi_304 > 0) g_price_212 = NormalizeDouble(g_price_212 / ld_24, Digits);

   if (gi_332) {

      for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

         OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

         if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

            if (OrderType() == OP_BUY) {

               g_price_180 = g_price_212 + TakeProfit2 * Point;

               gd_unused_196 = g_price_180;

               gd_308 = g_price_212 - Stoploss * Point;

               gi_268 = TRUE;

            }

         }

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

            if (OrderType() == OP_SELL) {

               g_price_180 = g_price_212 - TakeProfit2 * Point;

               gd_unused_204 = g_price_180;

               gd_308 = g_price_212 + Stoploss * Point;

               gi_268 = TRUE;

            }

         }

      }

   }

   if (gi_332) {

      if (gi_268 == TRUE) {

         for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

            OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

            if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) OrderModify(OrderTicket(), g_price_212, OrderStopLoss(), g_price_180, 0, Yellow);

            gi_332 = FALSE;

         }

      }

   }

   return (0);


 
agat8430 :

Merhaba ! Lütfen bana söyle . 1 T/P altındaki ilk ve son siparişi nasıl değiştirebilirim teşekkürler


Bu kodu, bir hack gibi görünmeyecek şekilde düzenleyin