MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1831

 
Mihail Matkovskij # :

Fiyat TP yönünde giderse iz tetiklenmeli ve fiyat geri çekilirse hiçbir şey yapmamalıdır. Bu durumda, SL seviyesi sadece TP yönünde gitmeli ve geri dönmemelidir.

Biliyorum

yazdım

sonsuz sayıda durma ve alma hareketinin anlık bir hareketi var

2021.12.23 21:07:51.634 2021.12.21 12:12:20 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:20 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71288 tp: 0.72038 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:18 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:18 111 AUDUSD,M15: #2'yi değiştir 0.02 AUDUSD'yi 0.71028 sl'den satın al: 0.71268 tp: 0.72018 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:16 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:16 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71248 tp: 0.71998 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:15 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:15 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71228 tp: 0.71978 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:13 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:13 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71208 tp: 0.71958 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:11 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:11 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71188 tp: 0.71938 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:10 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:10 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71168 tp: 0.71918 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:08 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:08 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71148 tp: 0.71898 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:06 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:06 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71128 tp: 0.71878 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:05 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:05 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71108 tp: 0.71858 tamam

2021.12.23 21:07:51.634 2021.12.21 12:12:00 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:12:00 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71088 tp: 0.71838 tamam

2021.12.23 21:07:51.634 2021.12.21 12:11:53 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!

2021.12.23 21:07:51.634 2021.12.21 12:11:53 111 AUDUSD,M15: #2 satın al 0.02 AUDUSD 0.71028 sl: 0.71068 tp: 0.71818 tamam

2021.12.23 21:07:51.634 2021.12.21 12:11:52 111 AUDUSD,M15: Satın alma emri değişikliği başarılı!


 
законопослушный гражданин # :

Biliyorum

yazdım

sonsuz sayıda durma ve alma hareketinin anlık bir hareketi var

Değiştirilen siparişin SL'sini almalı ve hesaplanan SL ile karşılaştırmalısınız. Eşitlerse, hesaplanan SL işlenen siparişin SL'sini geçene kadar robot hiçbir şey yapmamalıdır. İki ikili değer nasıl karşılaştırılır: ya NodmalizeDouble(değer, Rakamlar) (her değerin) ya da EqualDoubles https://www.mql5.com/en/docs/basis/types/double ile karşılaştırın

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Вещественные типы (double, float) - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
законопослушный гражданин # :

Biliyorum


doğru yerleştirmişsin. TrailingOrders() işlevi içinde bir şeyi değiştirdiniz mi?

 
Mihail Matkovskij # :

Değiştirilen siparişin SL'sini almalı ve hesaplanan SL ile karşılaştırmalısınız. ...

Genel olarak kurallar aşağıdaki gibidir.

  • Tahmini SL, siparişin SL'sinden daha az (daha az karlı) - hiçbir şey yapmayın
  • Tahmini SL, siparişin SL'sine eşittir - hiçbir şey yapmayın
  • Tahmini SL, siparişin SL'sini aştı (daha karlı) - SL'yi hesaplanan değerle değiştirin
Bir trol oluşturmak için bu kurallar, SL seviyesini hesaplamak için herhangi bir algoritma ile hemen hemen her trol oluşturmak için uygundur.
 
Tretyakov Rostyslav # :

doğru yerleştirmişsin. TrailingOrders() işlevi içinde bir şeyi değiştirdiniz mi?

ve değişti ve "olduğu gibi" koydu, sonuç aynıydı.

 
законопослушный гражданин # :

ve değişti ve "olduğu gibi" koydu, sonuç aynıydı.

Giriş parametrelerini görmeniz gerekir, çünkü kütüğe bakılırsa, trol düzgün çalışıyor
 
Tretyakov Rostyslav # :
Giriş parametrelerini görmeniz gerekir, çünkü günlüğe göre, trol düzgün çalışıyor

2021.12.24 16:10:14.788 2021.12.17 00:00:00 111 - kopya girişleri: Lot=0.01; durma kaybı=200; Kâr Al=560; kayma=3; büyü=1; K_Martin1=0.01; K_Martin2=1.9; K_Martin3=1.4; SiparişlerKapat=3; SiparişlerKapat2=5; RakamLot=2; DönemMA=21; MovingShift=1;


 
законопослушный гражданин # :

2021.12.24 16:10:14.788 2021.12.17 00:00:00 111 - kopya girişleri: Lot=0.01; durma kaybı=200; Kâr Al=560; kayma=3; büyü=1; K_Martin1=0.01; K_Martin2=1.9; K_Martin3=1.4; SiparişlerKapat=3; SiparişlerKapat2=5; RakamLot=2; DönemMA=21; MovingShift=1;


belki işlevi koda yanlış koydum?

 void OnTick ()
  {
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.
   TrailingOrders();
// Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
     {

// Если появился сигнал на покупку, то откроем ордер на покупку
       if (bSignalBuy() == true )
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
       if (bSignalSell() == true )
         vOrderOpenSell();
     } 
       DrawLABEL( "nextlot" , 1 , 5 , 0 ,Color1(), StringConcatenate ( "CURRENT LOT: " ,DoubleToStr(LOT(), 2 )));
       DrawLABEL( "currentlot" , 1 , 5 , 0 ,Color2(), StringConcatenate ( "NEXT LOT: " ,DoubleToStr(LOT(), 2 ))); 
  }

ve işlevin kendisini ayrı ayrı koyun

 //-------------------------------------------------------------------+

void TrailingOrders()
  {
   for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
           {
             if (OrderType() == OP_BUY)
              {
               if (Bid >= OrderOpenPrice()+(TakeProfit* 0.75 * _Point ) && OrderStopLoss()<OrderOpenPrice()- 20 * _Point )
                 {
                   if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+ 20 * _Point , OrderTakeProfit()+ 20 * _Point , 0 ))
                     Print ( "Модификации ордера на покупку успешна!" );
                   else
                     Print ( "Ошибка модификации ордера на покупку! - " , GetLastError ());
                 }
               if (Bid >= OrderOpenPrice()+(TakeProfit* 0.9 * _Point ) && OrderStopLoss()>=OrderOpenPrice()- 20 * _Point )
                 {
                   if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+ 30 * _Point , OrderTakeProfit()+ 10 * _Point , 0 ))
                     Print ( "Модификации ордера на покупку успешна!" );
                   else
                     Print ( "Ошибка модификации ордера на покупку! - " , GetLastError ());
                 }
              }
           }
        }
     }
  }
 
законопослушный гражданин # :

belki işlevi koda yanlış koydum?

ve işlevin kendisini ayrı ayrı koyun

 //-------------------------------------------------------------------+

void TrailingOrders()
  {
   
   for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
           {
             if (OrderType() == OP_BUY)
              {
               if (Bid >= OrderOpenPrice()+(TakeProfit* 0.75 * _Point ) && OrderStopLoss()<=OrderOpenPrice()-StopLoss* _Point )
                 {
                   if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice()-(StopLoss+ 20 )* _Point , OrderTakeProfit()+ 20 * _Point , 0 ))
                     Print ( "Модификации ордера на покупку успешна!" );
                   else
                     Print ( "Ошибка модификации ордера на покупку! - " , GetLastError ());
                 }
               if (Bid >= OrderOpenPrice()+(TakeProfit* 0.9 * _Point ) && OrderStopLoss()>=OrderOpenPrice()-(StopLoss+ 20 )* _Point )
                 {
                   if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+ 30 * _Point , OrderTakeProfit()+ 10 * _Point , 0 ))
                     Print ( "Модификации ордера на покупку успешна!" );
                   else
                     Print ( "Ошибка модификации ордера на покупку! - " , GetLastError ());
                 }
              }
           }
        }
     }
  }

Trol doğru duruyor.

Bunu dene

 
Tretyakov Rostyslav # :

Trol doğru duruyor.

Bunu dene

uzaya uçmak

önce durur, sonra çekimden sonra anında uzaya uçar (yol boyunca sırayı kapatır)

Anladığım kadarıyla mesele bu değil.

yanlışsam düzeltin: void OnTick()

açık sipariş yoksa ve bir sinyal varsa, vOrderOpenBuy() / vOrderOpenSell()

sonra void vOrderModify(int iOTi) gelir - yani, durur ve alır ayarlanır ve ardından hata kontrolü yapılır. Tümü.

yani aslında emir dur ya da al ile kapatılana kadar takip açısından herhangi bir şekilde düzeltilmesi mümkün değildir.

evet, gerçekten gerekli değil. bir (en fazla iki) birden fazla dur-kalk hareketine ihtiyacınız var.

Birkaç yol danışmanını analiz ettim - hepsinin planı yaklaşık olarak sizinkiyle aynı.

Hala nasıl uygulayacağımı düşünüyorum.

Dosyalar:
111.mq4  25 kb
Neden: