Bir danışmanı rastgele nasıl bir araya getiririm? - sayfa 54

 
Alexsandr San :

Bir özellik daha eklendi. Sadece terminalde gerçek zamanlı olarak kontrol etmeniz gerekiyor.

bu sürüm öyle - Tester Play'de

Fena bir özellik değil - size söyleyeceğim. İleri geri, karını alır ve bıyıklı, üflemez

Snapshot3.PNG

anlık görüntü4

sadece kod burada - aklınıza getirmeniz gerekiyor - her şey yolunda görünüyor

 //+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool CloseLotBuy( void )
  {
   bool res= false ;
   double level;
   double PROFIT_BUY= 0.00 ;
   PROFIT_BUY=m_position.Commission()+m_position.Swap()+m_position.Profit();
//---
   if (m_position. Symbol ()==m_symbol.Name())
     {
       if (m_position.PositionType()== POSITION_TYPE_BUY )
        {
         if (PROFIT_BUY<-TargetStopLoss || PROFIT_BUY>=TargetTakeProfit)
           {
             if (FreezeStopsLevels(level))
               ClosePositions( POSITION_TYPE_BUY ,level);
           }
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool CloseLotSell( void )
  {
   bool res= false ;
   double level;
   double PROFIT_SELL= 0.00 ;
   PROFIT_SELL=m_position.Commission()+m_position.Swap()+m_position.Profit();
//---
   if (m_position. Symbol ()==m_symbol.Name())
     {
       if (m_position.PositionType()== POSITION_TYPE_SELL )
        {
         if (PROFIT_SELL<-TargetStopLoss || PROFIT_SELL>=TargetTakeProfit)
           {
             if (FreezeStopsLevels(level))
               ClosePositions( POSITION_TYPE_SELL ,level);
           }
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool OpenLotBuy( void )
  {
   bool res= false ;
   double PROFIT_BUY= 0.00 ;
   CloseTikB= iClose ( NULL , Period (), 0 );
   OpenTikB= iOpen ( NULL , Period (), 0 );
//---
   int total= PositionsTotal (); // количество открытых позиций
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of current positions
       if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if (m_position. Symbol ()==m_symbol.Name())
           {
             if (total> 0 )
              {
               ulong position_ticket= PositionGetTicket (total- 1 ); // тикет позиции
              }
             if (total<limit_total_symbol) // количество открытых позиций
              {
               if (OpenTikB<CloseTikB)
                 {
                   if (m_position.PositionType()== POSITION_TYPE_BUY )
                    {
                     PROFIT_BUY=PROFIT_BUY+m_position.Commission()+m_position.Swap()+m_position.Profit();
                     if (PROFIT_BUY<-TargetOpenLot)
                       {
                         double price=m_symbol.Ask();
                         for ( uint y= 0 ; y<maxLimits; y++)
                          {
                           //--- open position
                           if (m_trade.PositionOpen(m_symbol.Name(), ORDER_TYPE_BUY ,InpLots,price, 0.0 , 0.0 ))
                               printf ( "Position by %s to be opened" ,m_symbol.Name());
                           else
                             {
                               printf ( "Error opening BUY position by %s : '%s'" ,m_symbol.Name(),m_trade.ResultComment());
                               printf ( "Open parameters : price=%f,TP=%f" ,price, 0.0 );
                             }
                           res= true ;
                          }
                       }
                    }
                 }
              }
           }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool OpenLotSell( void )
  {
   bool res= false ;
   double PROFIT_SELL= 0.00 ;
   CloseTikS= iClose ( NULL , Period (), 0 );
   OpenTikS= iOpen ( NULL , Period (), 0 );
//---
   int total= PositionsTotal (); // количество открытых позиций
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of current positions
       if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if (m_position. Symbol ()==m_symbol.Name())
           {
             if (total> 0 )
              {
               ulong position_ticket= PositionGetTicket (total- 1 ); // тикет позиции
              }
             if (total<limit_total_symbol) // количество открытых позиций
              {
               if (OpenTikS>CloseTikS)
                 {
                   if (m_position.PositionType()== POSITION_TYPE_SELL )
                    {
                     PROFIT_SELL=PROFIT_SELL+m_position.Commission()+m_position.Swap()+m_position.Profit();
                     if (PROFIT_SELL<-TargetOpenLot)
                       {
                         double price0=m_symbol.Bid();
                         for ( uint y= 0 ; y<maxLimits; y++)
                          {
                           if (m_trade.PositionOpen(m_symbol.Name(), ORDER_TYPE_SELL ,InpLots,price0, 0.0 , 0.0 ))
                               printf ( "Position by %s to be opened" ,m_symbol.Name());
                           else
                             {
                               printf ( "Error opening SELL position by %s : '%s'" ,m_symbol.Name(),m_trade.ResultComment());
                               printf ( "Open parameters : price=%f,TP=%f" ,price0, 0.0 );
                             }
                           res= true ;
                          }
                       }
                    }
                 }
              }
           }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
 
Alexsandr San :

Şimdi gerçek bir hesapta test ettim - iki açık pozisyondan küçük bir kar istedim, ayarlara 160 girdim, en büyük negatif pozisyondan kapanacağını düşündüm ama enfeksiyon yok, kapattım

karı 160 olan ve her iki pozisyonu da kapatan ve ben bir kupayım. Negatif ekleyerek ilk açık pozisyondan hesaplamanız gerektiği ortaya çıktı.


#özellik sürümü "1.017"

beşinci günde - sadece balyaya kadar bu fonksiyonun nasıl doğru şekilde kaydedileceği. Artık tüm Al veya Sat işlemlerinin bir çiftinde toplam kârla kapanıyor

 //+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool ProfitOnTick( void )
  {
   bool res= false ;
   double PROFIT_BUY= 0.00 ;
   double PROFIT_SELL= 0.00 ;

   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
     {
       string    position_GetSymbol= PositionGetSymbol (i); // GetSymbol позиции
       if (position_GetSymbol==m_symbol.Name())
        {
         if (m_position.PositionType()== POSITION_TYPE_BUY )
           {
            PROFIT_BUY=PROFIT_BUY+ PositionGetDouble ( POSITION_PROFIT );
           }
         else
           {
            PROFIT_SELL=PROFIT_SELL+ PositionGetDouble ( POSITION_PROFIT );
           }
        }
     }
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of current positions
       if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if (m_position. Symbol ()==m_symbol.Name())
           {
             if (m_position.PositionType()== POSITION_TYPE_BUY )
              {
               if (PROFIT_BUY<-TargetStopLoss || PROFIT_BUY>=TargetTakeProfit) // if the profit
                  ClosePosition(m_position. Symbol ()); // close a position by the specified symbo
              }
            res= true ;
           }
   for ( int u= PositionsTotal ()- 1 ; u>= 0 ; u--) // returns the number of current positions
       if (m_position.SelectByIndex(u)) // selects the position by index for further access to its properties
         if (m_position. Symbol ()==m_symbol.Name())
           {
             if (m_position.PositionType()== POSITION_TYPE_SELL )
              {
               if (PROFIT_SELL<-TargetStopLoss || PROFIT_SELL>=TargetTakeProfit) // if the profit
                  ClosePosition(m_position. Symbol ()); // close a position by the specified symbo
              }
            res= true ;
           }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
Dosyalar:
 
Alexsandr San :

Fena bir özellik değil - size söyleyeceğim. İleri geri, karını alır ve bıyıklı, üflemez

sadece kod burada - aklınıza getirmeniz gerekiyor - her şey yolunda görünüyor

Bu işlevin bir terminalde çalışması için kod oluşturulamıyor. 4 terminalde denemek istiyorum, bundan ne çıkacağını henüz bilmiyorum

4 nthvbyfkf

4 nthvbyfkf2

 
Alexsandr San :

Bu işlevin bir terminalde çalışması için kod oluşturulamıyor. 4 terminalde denemek istiyorum, bundan ne çıkacağını henüz bilmiyorum

Tüm bu 4 terminal herhangi bir sonuç vermedi. Ve genel olarak, Loss'un bu işlevi kod yazma gücümün ötesinde.

Ancak uzun zamandır böyle bir çalışma mantığı yarattım, sadece Yatay çizgiler yardımıyla. Partiyi neyin çarpacağını bulmak için kalır

enstantane fotoğraf resim 1

Yatay çizgiyi yukarıdan ayarlayın

 input string    t3= "----- Trailing Line: 1   -----" ;               //
input string    InpObjUpName                 = "ZTOP" ;             // Obj: TOP (Horizontal Line)
input int       InpStep1                     = 25 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommand    = Line2_sells;       // Obj:  command:

Alttan yatay çizgiyi ayarlayın

 input string    t3= "----- Trailing Line: 1   -----" ;               //
input string    InpObjDownName               = "ZLOWER" ;           // Obj: LOWER (Horizontal Line)
input int       InpStep2                     = 25 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommand     = Line1_buys;         // Obj:  command:

fiyat bu çizgilere değdiğinde, bir pozisyon açılacak ve Yatay çizgiler belirleyecektir.

Bunlar -

 input string    t4= "----- Trailing Line: 2   -----" ;               //
input string    InpObjUpNameG                = "POT" ;             // Obj: TOP (Horizontal Line)
input int       InpStep3                     = 25 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommandG   = Line2_sells;       // Obj:  command:
input string    InpObjDownNameG              = "REWOL" ;           // Obj: LOWER (Horizontal Line)
input int       InpStep4                     = 25 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommandG    = Line1_buys;         // Obj:  command:
input ushort    InpObjTrailingStopG          = 0 ;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStepG          = 5 ;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

ve bu Yatay çizgilerden bir pozisyon açacak ve ilk Yatay çizgileri ortaya çıkaracak - ve bu, fiyat onlara ulaşana kadar tekrarlanacak.
GBPUSDM5 şekil 2

Burada kapalı - ayarlarda ayarlayın, KÂR

GBPUSDM52 Figür 3

-------------------------------------------------- --

parite 200 kâra ulaştığında - pozisyonu kapatır

GBPUSDM53 Şekil 4

200'e ulaştı ve alım veya satım için tüm pozisyonları kapattı - sonuçta, her iki yönde de açabilirsiniz ve her iki tarafın da kendi karı veya zararı vardır

- şimdi, Yatay çizgiyi alır almaz bir pozisyon açar - ancak bunları manuel olarak hareket ettirebilirsiniz

GBPUSDM54 şekil 5

 

İşlev, kayıptan lotu artırır.

bu kişiye teşekkürler https://www.mql5.com/ru/forum/107406#comment_3018721

2732

Igor Kim

 //+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool OpenLotBuy( void )
  {
   bool res= false ;
//---
   double PROFIT_BUY= 0.00 ;
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
     {
       string    position_GetSymbol= PositionGetSymbol (i); // GetSymbol позиции
       if (position_GetSymbol==m_symbol.Name())
        {
         if (m_position.PositionType()== POSITION_TYPE_BUY )
           {
            PROFIT_BUY=PROFIT_BUY+ PositionGetDouble ( POSITION_PROFIT );
           }
        }
     }
   double Lots=InpLots;
   double ab=PROFIT_BUY;
   if (ab<- 200 && ab>=- 400 )
      Lots= 0.01 ;
   if (ab<- 400 && ab>=- 800 )
      Lots= 0.02 ;
   if (ab<- 800 && ab>=- 1600 )
      Lots= 0.04 ;
   if (ab<- 1600 )
      Lots= 0.08 ;
   double price=m_symbol.Ask();
   for ( uint y= 0 ; y<maxLimits; y++)
     {
       //--- open position
       if (m_trade.PositionOpen(m_symbol.Name(), ORDER_TYPE_BUY ,Lots,price, 0.0 , 0.0 ))
         printf ( "Position by %s to be opened" ,m_symbol.Name());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" ,m_symbol.Name(),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,TP=%f" ,price, 0.0 );
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| Check for long position closing                                  |
//+------------------------------------------------------------------+
bool OpenLotSell( void )
  {
   bool res= false ;
//---
   double PROFIT_SELL= 0.00 ;
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
     {
       string    position_GetSymbol= PositionGetSymbol (i); // GetSymbol позиции
       if (position_GetSymbol==m_symbol.Name())
        {
         if (m_position.PositionType()== POSITION_TYPE_BUY )
           {
            PROFIT_SELL=PROFIT_SELL+ PositionGetDouble ( POSITION_PROFIT );
           }
        }
     }
   double Lots=InpLots;
   double ab=PROFIT_SELL;
   if (ab<- 200 && ab>=- 400 )
      Lots= 0.01 ;
   if (ab<- 400 && ab>=- 800 )
      Lots= 0.02 ;
   if (ab<- 800 && ab>=- 1600 )
      Lots= 0.04 ;
   if (ab<- 1600 )
      Lots= 0.08 ;
   double price0=m_symbol.Bid();
   for ( uint y= 0 ; y<maxLimits; y++)
     {
       if (m_trade.PositionOpen(m_symbol.Name(), ORDER_TYPE_SELL ,Lots,price0, 0.0 , 0.0 ))
         printf ( "Position by %s to be opened" ,m_symbol.Name());
       else
        {
         printf ( "Error opening SELL position by %s : '%s'" ,m_symbol.Name(),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,TP=%f" ,price0, 0.0 );
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
Увеличение размера ЛОТА. ПОМОГИТЕ!!!
Увеличение размера ЛОТА. ПОМОГИТЕ!!!
  • 2008.03.07
  • www.mql5.com
Скажите, можно ли как то увеличить размер лота с каждой сделки....??? К примеру, у меня депозит 100, торгую с лотом 0.50. депозит 200, торую 1...
 

#özellik sürümü "1.018"

Para Birimi Kaybından lotu artırma yeteneği eklendi

 input string    tL= "----  Lots Parameters    -----" ;               //
input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots1                     = 0.01 ;               // Lots 1
input int       InpLots_01                   = 500 ;               // До убытка валюте Lots 0.01
input double    InpLots2                     = 0.02 ;               // Lots 2
input int       InpLots_02                   = 1000 ;               // До убытка валюте Lots 0.02
input double    InpLots3                     = 0.04 ;               // Lots 3
input int       InpLots_03                   = 2000 ;               // До убытка валюте Lots 0.04
input double    InpLots4                     = 0.08 ;               // Lots 4

--------------------------------

eylemde çok artış. Sadece ayarlarda miktarı seçmeniz gerekiyor, 4 seviye - son miktar, 2000'den fazla lot 0.08 açılacak

GBPUSDM5h

bu çizgilerden gelen resimde bir pozisyon açılıyor ve ayarlarda bu çizgilerin trolünü de ayarlayabilirsiniz

 input string    t3= "----- Trailing Line: 1   -----" ;               //
input string    InpObjUpName                 = "ZTOP" ;             // Obj: TOP (Horizontal Line)
input int       InpStep1                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommand    = Line2_sells;       // Obj:  command:
input string    InpObjDownName               = "ZLOWER" ;           // Obj: LOWER (Horizontal Line)
input int       InpStep2                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommand     = Line1_buys;         // Obj:  command:
input ushort    InpObjTrailingStop           = 0 ;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStep           = 5 ;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string    t4= "----- Trailing Line: 2   -----" ;               //
input string    InpObjUpNameG                = "POT" ;             // Obj: TOP (Horizontal Line)
input int       InpStep3                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommandG   = Line2_sells;       // Obj:  command:
input string    InpObjDownNameG              = "REWOL" ;           // Obj: LOWER (Horizontal Line)
input int       InpStep4                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommandG    = Line1_buys;         // Obj:  command:
input ushort    InpObjTrailingStopG          = 0 ;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStepG          = 5 ;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

yerinde 0 set mesafe = 0 ; // Obj: İzleyen Durdurma (fiyattan nesneye olan mesafe, pip cinsinden)

----------------------------ÖNEMLİ!

bir trol ile - sinyal tetiklendiğinde çizgi çubuktan daha uzağa atlayacak şekilde hesaplamanız gerekir, aksi takdirde sinyal tekrar tetiklenir

İşte durum - Yatay çizgi takip ederken ve komut tetiklendiğinde aynı çubuğa geri döndü

XAUUSDM5

----------------------------------

Yatay çizgi ne olursa olsun, 0 = 20 olarak ayarlayın ; // Obj: Izgara aralığı, noktalar ("0" -> yanlış)

sıfır ise, komutu yürütür ve çıkar

Dosyalar:
 
Alexsandr San :

İşlev, kayıptan lotu artırır.

bu kişiye teşekkürler https://www.mql5.com/en/forum/107406#comment_3018721

2732

Bugün bu işlevi, yatay çizgileri kayıpta çoğaltma işleviyle test ettim (fiyat yanlış yöne gittiğinden, yolda yatay bir çizgiyle karşılaşıyor, ondan bir pozisyon açılıyor ve çizgi belirli bir mesafeye kadar daha da sekiyor , kayıp artar ve bir sonraki yatay çizgiye dokunulduğunda parti bir artışla açılır).

delirdim. - bu mantık, artı her şeyi çıkarır. İlginç! Ne kadara satabilirsin, böyle bir mucize ?!

anlık görüntü3

----------------------------------------- İşte başka bir örnek - fiyat ters gidiyor Bende. bu ilk resim, ikincisini göndereceğim, görevini nasıl yapıyor

USDJPYM5 resim 1

USDJPYM5z şekil 2

enstantane fotoğraf Figür 3

 

Her şeyin nasıl çalıştığını anlamak için

Yardımcı Programda (AL ve SAT) düğmeler vardır, bunlar Yatay çizgilerin yaptığı tüm komutları gerçekleştirir - nasıl çalıştığını test cihazında kolayca görebilirsiniz.

Düğme ayarı ----------------

 input string    t7= "----- Button:            -----" ;               //
input ENUM_TRADE_COMMAND InpTradeCommandBut = Line1_buys;         // Obj(BUY):  command:Button: BUY
input ENUM_TRADE_COMMAND InTradeCommandBut  = Line2_sells;       // Obj(SELL):  command:Button: SELL
input int       TrailingStop_STOP_LEVEL      = 36 ;                 // Button: Trailing Stop LEVEL

Yatay çizgi ayarı--------------------

 input string    t3= "----- Trailing Line: 1   -----" ;               //
input string    InpObjUpName                 = "ZTOP" ;             // Obj: TOP (Horizontal Line)
input int       InpStep1                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommand    = Line2_sells;       // Obj:  command:
input string    InpObjDownName               = "ZLOWER" ;           // Obj: LOWER (Horizontal Line)
input int       InpStep2                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommand     = Line1_buys;         // Obj:  command:
input ushort    InpObjTrailingStop           = 0 ;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStep           = 5 ;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string    t4= "----- Trailing Line: 2   -----" ;               //
input string    InpObjUpNameG                = "POT" ;             // Obj: TOP (Horizontal Line)
input int       InpStep3                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommandG   = Line2_sells;       // Obj:  command:
input string    InpObjDownNameG              = "REWOL" ;           // Obj: LOWER (Horizontal Line)
input int       InpStep4                     = 20 ;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommandG    = Line1_buys;         // Obj:  command:
input ushort    InpObjTrailingStopG          = 0 ;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStepG          = 5 ;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

İşte yürütülebilecek komutlar --------------------------------

 //+------------------------------------------------------------------+
//| ENUM_TRADE_COMMAND                                                 |
//+------------------------------------------------------------------+
enum ENUM_TRADE_COMMAND
  {
   Turn_Off= 0 ,       // TURN OFF
   Line1_Line1= 1 ,     // Line: LOWER
   Line2_Line2= 2 ,     // Line: TOP
   Line_Line= 3 ,       // Line: LOWER+Line: TOP
   Line1_buys= 4 ,     // Line: LOWER+Buy's
   Line2_sells= 5 ,     // Line: TOP+Sell's
   sells_Line1= 6 ,     // Line: LOWER+Sell's
   buys_Line2= 7 ,     // Line: TOP+Buy's
   close_buys= 8 ,     // Close All Buy's
   close_sells= 9 ,     // Close All Sell's
   close_all= 10 ,     // Close All Buy's and Sell's
   open_buy= 11 ,       // Open Buy
   open_sell= 12 ,     // Open Sell
   close_open_b= 13 ,   // Close Sell+Open Buy
   close_open_s= 14 ,   // Close Buy+Open Sell
   open_buy_sell= 15 , // Open Buy and Sell
  };
//+------------------------------------------------------------------+

kar fonksiyonu

------------ Kar toplam değildir - ALIM'ın kendi karı vardır, SATIŞ'ın kendine ait (örneğin, ayarlarda biri alışta diğeri satışta olmak üzere iki açık pozisyonunuz vardır, 100 kazanmak istiyorum, yani her biri 100'er tane almaz.) her çiftin farklı bir karı vardır, her birinin 100 alması gerekir (eğer çok çiftle çalışıyorsanız, her çift için Yardımcı Programı ayrı ayrı kurmanız gerekir)

 input double    TargetTakeProfit             = 1000000 ;           // Прибыль на паре в валюте
Важно!!! правильно настроить , открытии лота ( До убытка валюте)
input string    tL= "----  Lots Parameters    -----" ;               //
input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots1                     = 0.01 ;               // Lots 1
input int       InpLots_01                   = 500 ;               // До убытка валюте Lots 0.01
input double    InpLots2                     = 0.02 ;               // Lots 2
input int       InpLots_02                   = 1000 ;               // До убытка валюте Lots 0.02
input double    InpLots3                     = 0.04 ;               // Lots 3
input int       InpLots_03                   = 2000 ;               // До убытка валюте Lots 0.04
input double    InpLots4                     = 0.08 ;               // Lots 4

Paritede iki kayıp var - Toplam kayıp ve (alıp satmanın her birinin kendi zararı var)

Burada hesaplama, satın aldan zararına, sattan zarara yapılır.

 

Biraz düzelttim - böylece Yatay çizgi sinyale daha hızlı tepki verecekti.

bir durum vardı - fiyat dokundu, Yatay çizgiyi geçti, ancak çalışmadı.

işe yaramadı

#özellik sürümü "1.019"

Dosyalar:
 

Yeni bir özellik deniyorum. Takvim bir sinyal verir, sinyalden bir komut seçebilirsiniz

 input string    t10= "---- CalendarValueLast  -----" ;               //
input bool      Inpndar                      = false ;             // Сигнал Календаря Включить
input ENUM_TRADE_COMMAND InpCalendCommandS  = Line_Line;         // Trade command:

yine de takvim için başka hangi komutların gerekli olduğunu düşünmeniz gerekiyor.

bunlar zaten var

 //+------------------------------------------------------------------+
//| ENUM_TRADE_COMMAND                                                 |
//+------------------------------------------------------------------+
enum ENUM_TRADE_COMMAND
  {
   Turn_Off= 0 ,       // TURN OFF
   Line1_Line1= 1 ,     // Line: LOWER
   Line2_Line2= 2 ,     // Line: TOP
   Line_Line= 3 ,       // Line: LOWER+Line: TOP
   Line1_buys= 4 ,     // Line: LOWER+Buy's
   Line2_sells= 5 ,     // Line: TOP+Sell's
   sells_Line1= 6 ,     // Line: LOWER+Sell's
   buys_Line2= 7 ,     // Line: TOP+Buy's
   close_buys= 8 ,     // Close All Buy's
   close_sells= 9 ,     // Close All Sell's
   close_all= 10 ,     // Close All Buy's and Sell's
   open_buy= 11 ,       // Open Buy
   open_sell= 12 ,     // Open Sell
   close_open_b= 13 ,   // Close Sell+Open Buy
   close_open_s= 14 ,   // Close Buy+Open Sell
   open_buy_sell= 15 , // Open Buy and Sell
  };
//+------------------------------------------------------------------+

yardımcı programı resimde kurdu, bu resim 1. ikincisi yürütülen komutla olacak (belirli bir mesafedeki yatay çizgiler)

anlık görüntü7 resim 1