어드바이저를 무작위로 모으는 방법 - 페이지 54

 
Alexsandr San :

기능이 하나 더 추가되었습니다. 터미널에서 실시간으로 체크인만 하면 됩니다.

이 버전은 그렇습니다 - 테스터 플레이에서

나쁘지 않은 기능입니다. 앞뒤로 이익을 취하며 콧수염을 기르고 불지 않는다

스냅샷3.PNG

스냅샷4

여기에만 코드가 있습니다. 염두에 두어야 합니다. 모든 것이 잘 작동하는 것 같습니다.

 //+------------------------------------------------------------------+
//| 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 :

지금 실제 계정에서 테스트했습니다 - 두 개의 열린 위치 에서 작은 이익을 원했고 설정에 160을 입력했습니다. 가장 큰 음수 위치에서 닫힐 것이라고 생각했지만 감염이 없었습니다. 닫았습니다.

이익이 160이 되고 두 포지션을 모두 청산한 나는 우엉이다. 음수를 추가하여 첫 번째 열린 위치에서 계산해야한다는 것이 밝혀졌습니다.


#속성 버전 "1.017"

다섯 번째 날 - 이 기능을 올바르게 등록하는 방법에 대해서만. 이제 모든 매수 또는 매도의 한 쌍에 대한 총 이익으로 마감됩니다.

 //+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+
파일:
 
Alexsandr San :

나쁘지 않은 기능입니다. 앞뒤로 이익을 취하며 콧수염을 기르고 불지 않는다

여기에만 코드가 있습니다. 염두에 두어야 합니다. 모든 것이 잘 작동하는 것 같습니다.

한 터미널에서 이 기능이 작동하도록 코드를 생성할 수 없습니다. 4단말로 해보고 싶은데 뭐가 나올지 아직 모르겠네요

4 nthvbyfkf

4 nthvbyfkf2

 
Alexsandr San :

한 터미널에서 이 기능이 작동하도록 코드를 생성할 수 없습니다. 4단말로 해보고 싶은데 뭐가 나올지 아직 모르겠네요

이 4개의 터미널 모두 결과가 나오지 않았습니다. 그리고 일반적으로 Loss의 이 기능은 내가 코드를 작성할 수 있는 능력을 초월합니다.

그러나 나는 오랫동안 수평선의 도움으로 그러한 작업 논리를 만들었습니다. 무엇이 많이 증가할지 알아내는 것이 남아 있습니다.

스냅 사진 그림 1

위에서부터 수평선 설정

 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:

아래쪽에서 수평선을 설정

 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:

가격이 이 라인에 닿으면 포지션이 열리고 수평 라인이 설정됩니다.

이것들은 -

 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)

그리고 이 수평선에서 포지션을 열고 첫 번째 수평선을 드러냅니다. 그리고 이것은 가격이 도달할 때까지 반복될 것입니다.
GBPUSDM5 그림 2

여기 닫혀 있습니다 - 설정에서 설정, PROFIT

GBPUSDM52 그림 3

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

쌍이 이익 200에 도달하면 - 포지션을 닫습니다

GBPUSDM53 그림 4

200에 도달하고 매수 또는 매도를 위한 모든 포지션을 청산했습니다 - 결국, 당신은 양방향으로 열 수 있고 각 측에 고유한 이익 또는 손실이 있습니다

- 이제 그가 수평선을 얻자 마자 포지션을 열었지만 수동으로 이동할 수 있습니다.

GBPUSDM54 그림 5

 

함수는 손실에서 로트를 늘립니다.

이 사람에게 감사합니다 https://www.mql5.com/en/forum/107406#comment_3018721

2732

이고르 김

 //+------------------------------------------------------------------+
//| 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...
 

#속성 버전 "1.018"

통화 손실에서 랏을 늘리는 기능 추가

 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

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

행동이 많이 증가합니다. 설정에서 금액을 선택하기만 하면 됩니다. 4단계 - 마지막 금액, 2000개 이상이 로트 0.08 을 엽니다.

GBPUSDM5h

이 라인의 그림에서 위치가 열리고 설정에서 이러한 라인의 트롤을 설정할 수도 있습니다.

 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)

제자리에 0 설정 거리 = 0 ; // Obj: Trailing Stop(가격에서 객체까지의 거리, 핍 단위)

----------------------------중요한!

트롤 사용 - 신호가 트리거될 때 라인이 막대에서 더 멀리 점프하도록 계산해야 합니다. 그렇지 않으면 신호가 다시 트리거됩니다.

상황은 다음과 같습니다. 수평선이 후행하고 명령이 실행되었을 때 동일한 막대로 다시 점프했습니다.

XAUUSDM5

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

수평선이 반복되지 않으면 0 = 20 으로 설정하십시오 . // Obj: 그리드 간격, points("0" -> false)

0이면 명령을 실행하고 종료합니다.

파일:
 
Alexsandr San :

함수는 손실에서 로트를 늘립니다.

이 사람에게 감사합니다 https://www.mql5.com/en/forum/107406#comment_3018721

2732

나는 오늘 이 기능을 손실로 수평선을 복제하는 기능으로 테스트했습니다. (가격이 잘못된 방향으로 갔을 때, 그것은 도중에 수평선을 만났고, 그 위치에서 포지션이 열리고 선이 주어진 거리까지 더 멀리 튀었습니다. , 손실이 증가하고 다음에 수평선을 터치하면 증가로 로트가 열립니다).

나는 미쳤다. - 이 논리는 모든 것을 플러스로 끌어냅니다. 흥미로운! 얼마에 팔 수 있는지, 그런 기적?!

스냅샷3

-------------------------------------- 여기 또 다른 예가 있습니다. 가격이 반대입니다. 나. 이것은 첫 번째 사진입니다. 두 번째 사진을 게시하겠습니다. 작동 방식

USDJPYM5 그림 1

USDJPYM5z 그림 2

스냅 사진 그림 3

 

모든 작동 방식을 이해하려면

유틸리티에는 버튼(BUY 및 SELL)이 있으며 수평선 이 수행하는 모든 명령을 수행합니다. 테스터에서 작동 방식을 간단히 볼 수 있습니다.

버튼 설정 ----------------

 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

수평선 설정--------------------

 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)

실행할 수 있는 명령은 다음과 같습니다.--------------------------------

 //+------------------------------------------------------------------+
//| 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
  };
//+------------------------------------------------------------------+

이익 함수

------------ 이익은 총계가 아닙니다 - BUY에는 고유한 이익이 있고 SELL에는 고유한 이익이 있습니다(예를 들어, 설정에서 하나는 매수에 다른 하나는 매도에 두 개의 포지션이 열려 있습니다. 100을 벌고 싶기 때문에 각각 100을 받지는 않을 것입니다.) 각 쌍에는 다른 이익이 있고 각각 100을 가져와야 합니다(여러 쌍으로 작업하는 경우 각 쌍에 대해 유틸리티를 별도로 설치해야 함).

 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

쌍에는 두 가지 손실이 있습니다 - 총 손실 및 (매수 및 매도에는 각각 고유한 손실이 있습니다)

여기에서 계산은 매수 매도 손실 매도 손실

 

약간 수정 - 수평선 이 신호에 더 빨리 응답하도록.

가격이 만지고 수평선을 넘었지만 작동하지 않는 상황이있었습니다.

작동하지 않았다

#속성 버전 "1.019"

파일:
 

새로운 기능을 시도하고 있습니다. 달력은 신호를 제공하며 신호에서 명령을 선택할 수 있습니다.

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

여전히 달력에 필요한 다른 명령에 대해 생각할 필요가 있습니다.

이것들은 이미 거기에 있습니다

 //+------------------------------------------------------------------+
//| 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
  };
//+------------------------------------------------------------------+

그림에 유틸리티를 설치했습니다. 이것은 그림 1입니다. 두 번째 것은 실행된 명령과 함께 있을 것입니다(주어진 거리의 가로선)

스냅샷7 그림 1