danışman iyileştirme stratejisi - sayfa 5

 
https://www.mql5.com/ru/code/7108 Burada da trollerle ilgili ilginç bir materyal var.
 

3. Sondaki standart - 'adım adım'.

 void TrailingStairs ( int ticket , int trldistance , int trlstep )

Bu tür izleme, standart olanın bir modifikasyonudur. Yanılmıyorsam, bir zamanlar KimIV tarafından benzer bir yazı yazıldı (ancak "daha nazik" olduğu için, ... :) Standart takipten farklıdır, çünkü stop loss "nokta nokta" aktarılmaz ( örneğin, 30 puanlık bir mesafede +31'de kayıp durdurma +1, +32'de - +2, vb.) kâr +50'ye ulaşır (40 p. + adım) (böylece fiyata belirli bir özgürlük veriyoruz, ki bu aslında bu algoritmanın özüdür) ve sadece +50 stop kaybında +10'dan bir değere taşınacaktır. adım - +10'dan +20'ye, +60'ta - +30 puana vb.

Seçenekler:
bilet -
benzersiz sipariş numarası ( OrderSelect() kullanılarak fonksiyon çağrılmadan önce seçilir);
trldistance - "izlediğimiz" mevcut orandan (noktalardan) olan mesafe (MarketInfo(Symbol(),MODE_STOPLEVEL) değerinden az değil);
trlstep - kaybı durdur (puan) "adım" değiştir (1'den az değil).

trlstep =1 ile bu fonksiyon standart takipten farklı olmayacaktır. Tekrar ediyorum, bu algoritmanın ana "özelliği" döviz kuruna bir miktar "hareket özgürlüğü" sağlamaktır - zararı durdurma ancak fiyat "dolaştıktan ve karar verdikten" sonra sıkılaştırılır. Bu takip eden algoritmayla ilk olarak V. Barishpolts tarafından daha önce bahsedilen "Kayan Kanallar" taktiklerinin kurallarının açıklamasında tanıştım.

=================

Bu danışmanda ilginç

 
//+------------------------------------------------------------------+
//| ТРЕЙЛИНГ СТАНДАРТНЫЙ-СТУПЕНЧАСТЫЙ                                |
//| Функции передаётся тикет позиции, расстояние от курса открытия,  |
//| на котором трейлинг запускается (пунктов) и "шаг", с которым он  |
//| переносится (пунктов)                                            |
//| Пример: при +30 стоп на +10, при +40 - стоп на +20 и т.д.        |
//+------------------------------------------------------------------+
 
void TrailingStairs( int ticket, int trldistance, int trlstep)
   { 
   
   double nextstair; // ближайшее значение курса, при котором будем менять стоплосс
 
   // проверяем переданные значения
   if ((trldistance<MarketInfo( Symbol (),MODE_STOPLEVEL)) || (trlstep< 1 ) || (trldistance<trlstep) || (ticket== 0 ) || (! OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)))
      {
       Print ( "Трейлинг функцией TrailingStairs() невозможен из-за некорректности значений переданных ей аргументов." );
       return ( 0 );
      } 
   
   // если длинная позиция (OP_BUY)
   if (OrderType()==OP_BUY)
      {
       // расчитываем, при каком значении курса следует скорректировать стоплосс
       // если стоплосс ниже открытия или равен 0 (не выставлен), то ближайший уровень = курс открытия + trldistance + спрэд
       if ((OrderStopLoss()== 0 ) || (OrderStopLoss()<OrderOpenPrice()))
      nextstair = OrderOpenPrice() + trldistance* Point ;
         
       // иначе ближайший уровень = текущий стоплосс + trldistance + trlstep + спрэд
       else
      nextstair = OrderStopLoss() + trldistance* Point ;
 
       // если текущий курс (Bid) >= nextstair и новый стоплосс точно лучше текущего, корректируем последний
       if (Bid>=nextstair)
         {
         if ((OrderStopLoss()== 0 ) || (OrderStopLoss()<OrderOpenPrice()) && (OrderOpenPrice() + trlstep* Point <Bid-MarketInfo( Symbol (),MODE_STOPLEVEL)* Point )) 
            {
             if (!OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice() + trlstep* Point ,OrderTakeProfit(),OrderExpiration()))
             Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
            }
         }
       else
         {
         if (!OrderModify(ticket,OrderOpenPrice(),OrderStopLoss() + trlstep* Point ,OrderTakeProfit(),OrderExpiration()))
         Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
         }
      }
      
   // если короткая позиция (OP_SELL)
   if (OrderType()==OP_SELL)
      { 
       // расчитываем, при каком значении курса следует скорректировать стоплосс
       // если стоплосс ниже открытия или равен 0 (не выставлен), то ближайший уровень = курс открытия + trldistance + спрэд
       if ((OrderStopLoss()== 0 ) || (OrderStopLoss()>OrderOpenPrice()))
      nextstair = OrderOpenPrice() - (trldistance + MarketInfo( Symbol (),MODE_SPREAD))* Point ;
      
       // иначе ближайший уровень = текущий стоплосс + trldistance + trlstep + спрэд
       else
      nextstair = OrderStopLoss() - (trldistance + MarketInfo( Symbol (),MODE_SPREAD))* Point ;
       
       // если текущий курс (Аск) >= nextstair и новый стоплосс точно лучше текущего, корректируем последний
       if (Ask<=nextstair)
         {
         if ((OrderStopLoss()== 0 ) || (OrderStopLoss()>OrderOpenPrice()) && (OrderOpenPrice() - (trlstep + MarketInfo( Symbol (),MODE_SPREAD))* Point >Ask+MarketInfo( Symbol (),MODE_STOPLEVEL)* Point ))
            {
             if (!OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice() - (trlstep + MarketInfo( Symbol (),MODE_SPREAD))* Point ,OrderTakeProfit(),OrderExpiration()))
             Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
            }
         }
       else
         {
         if (!OrderModify(ticket,OrderOpenPrice(),OrderStopLoss()- (trlstep + MarketInfo( Symbol (),MODE_SPREAD))* Point ,OrderTakeProfit(),OrderExpiration()))
         Print ( "Не удалось модифицировать стоплосс ордера №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
         }
      }      
   }

İşte bunun yerine yapıştırılacak tam kodu

 //+------------------------------------------------------------------+
void TrailingStairs( int ticket, int trldistance)
   {
     int Spred=Ask - Bid;
     if (OrderType()==OP_BUY)
      {
       if ((Bid-OrderOpenPrice())>( Point *trldistance))
         {
           if (OrderStopLoss()<Bid- Point *trldistance || (OrderStopLoss()== 0 ))
            {
             OrderModify(ticket,OrderOpenPrice(),Bid- Point *trldistance,OrderTakeProfit(), 0 ,Green);
             if (PolLots)
             if ( NormalizeDouble (OrderLots()/ 2 , 2 )>MarketInfo( Symbol (), MODE_MINLOT))
               {
               OrderClose(ticket, NormalizeDouble (OrderLots()/ 2 , 2 ),Ask, 3 ,Green);
               }
             else
               {
               OrderClose(ticket,OrderLots(),Ask, 3 ,Green);
               }
            }
         }
       }
     else
       {
         if ((OrderOpenPrice()-Ask)>( Point *trldistance))
          {
           if ((OrderStopLoss()>(Ask+ Point *trldistance)) || (OrderStopLoss()== 0 ))
             {
              OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point *trldistance,OrderTakeProfit(), 0 ,Red);
             if (PolLots)
             if ( NormalizeDouble (OrderLots()/ 2 , 2 )>MarketInfo( Symbol (), MODE_MINLOT))
               {
               OrderClose(ticket, NormalizeDouble (OrderLots()/ 2 , 2 ),Bid, 3 ,Green);
               }
             else
               {
               OrderClose(ticket,OrderLots(),Bid, 3 ,Green);
               }
             }
          }
        }
    }


Bugün nasılsın?

 

Beğendiğiniz danışmanı değiştirmeye başlamanızı ve kendi başınıza yerleştirmemenizi tavsiye ederim - sonuç neredeyse aynı olacak, ancak daha az sorun olacak.

Ayrıca ALIEN kodunu okuma ve anlama yeteneği de oldukça faydalıdır...

 
ktest0 :

Beğendiğiniz danışmanı değiştirmeye başlamanızı ve kendi başınıza yerleştirmemenizi tavsiye ederim - sonuç neredeyse aynı olacak, ancak daha az sorun olacak.

Ayrıca ALIEN kodunu okuma ve anlama yeteneği de oldukça faydalıdır...

O sahip olmak isterken ve yapamamak!
 
borilunad :
O sahip olmak isterken ve yapamamak!

))) Herkes bununla başlar ... Ve sonra - ormana ne kadar uzak olursa, partizanlar o kadar kalın ...
 

Lütfen demliğe kodu nasıl yazacağını danışmana söyleyin,
Hangisi belirli bir süre için Yüksek ve Düşük oluşturur (örn. 10.45 - 11.15)?

Yani bu saatte danışmanı açsın yani 9.00'da terminali açıyorum -> saat 10.45 olduğunda açıp takibe başlıyor Düşük ve bekleyen siparişler bu hatlardan çok uzakta değil.

Cevabınız için şimdiden teşekkür ederiz.

 
Peki, danışmanı bükebilirsin ....
 

Trelling'in nasıl bağlantılı olduğunu anlamıyorum.

Sonuçta, aslında sadece çalışması gerekir

 
IRIP :

Trelling'in nasıl bağlantılı olduğunu anlamıyorum.

Sonuçta, aslında sadece çalışması gerekir


"Sadece çalış" kimse ve hiçbir şey yapmayacak.

Bu özel yolun ne aradığını, hangi koşullarda, hangi adımla, herhangi bir ek koşul olup olmadığını analiz etmek gerekir.

Trol kodunu demonte ediyorsunuz ve her şey netleşiyor, ancak "sıkışmış ve şişmiş gözler" ilkesi iyi bir sonuç vermiyor....

Neden: