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

 

riskin nasıl doğru bir şekilde reçete edileceğini anladım

 #define Magic_Number 0
//+------------------------------------------------------------------+
//| Enum Lor or Risk                                                 |
//+------------------------------------------------------------------+
enum ENUM_LOT_OR_RISK
  {
   lots= 0 ,     // Constant lot
   risk= 1 ,     // Risk in percent
  };
//+------------------------------------------------------------------+


 input double    MaximumRisk             = 0.01 ;           // Maximum Risk in percentage
input double    DecreaseFactor          = 3 ;             // Descrease factor
input ENUM_LOT_OR_RISK InpLotOrRisk    = lots;           // Money management: Lot OR Risk 
   //+------------------------------------------------------------------+
   //| Calculate optimal lot size                                       |
   //+------------------------------------------------------------------+
   double             TradeSizeOptimized( void )
     {
       double price= 0.0 ;
       double margin= 0.0 ;
       //--- select lot size
       if (! SymbolInfoDouble ( _Symbol , SYMBOL_ASK ,price))
         return ( 0.0 );
       if (! OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 1.0 ,price,margin))
         return ( 0.0 );
       if (margin<= 0.0 )
         return ( 0.0 );
       double lot= 0 ;
       //---
       switch (InpLotOrRisk)
        {
         case lots:
            lot=MaximumRisk;
             break ;
         case risk:
            lot= NormalizeDouble ( AccountInfoDouble ( ACCOUNT_MARGIN_FREE )*MaximumRisk/margin, 2 );
         default :
             break ;
        }
       //--- calculate number of losses orders without a break
       if (DecreaseFactor> 0 )
        {
         //--- select history for access
         HistorySelect ( 0 , TimeCurrent ());
         //---
         int     orders= HistoryDealsTotal ();   // total history deals
         int     losses= 0 ;                     // number of losses orders without a break

         for ( int i=orders- 1 ; i>= 0 ; i--)
           {
             ulong ticket= HistoryDealGetTicket (i);
             if (ticket== 0 )
              {
               Print ( "HistoryDealGetTicket failed, no trade history" );
               break ;
              }
             //--- check symbol
             if ( HistoryDealGetString (ticket, DEAL_SYMBOL )!= _Symbol )
               continue ;
             //--- check Expert Magic number
             if ( HistoryDealGetInteger (ticket, DEAL_MAGIC )!=Magic_Number)
               continue ;
             //--- check profit
             double profit= HistoryDealGetDouble (ticket, DEAL_PROFIT );
             if (profit> 0.0 )
               break ;
             if (profit< 0.0 )
               losses++;
           }
         //---
         if (losses> 1 )
            lot= NormalizeDouble (lot-lot*losses/DecreaseFactor, 1 );
        }
       //--- normalize and check limits
       double stepvol= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP );
      lot=stepvol* NormalizeDouble (lot/stepvol, 0 );

       double minvol= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
       if (lot<minvol)
         lot=minvol;

       double maxvol= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
       if (lot>maxvol)
         lot=maxvol;
       //--- return trading volume
       return (lot);

     }
   //+------------------------------------------------------------------+

nerede lot - TradeSizeOptimized( ) ekleyin

Uzmanda düzeltmeniz gerekiyor - aksi halde tam orada değil

 

yeniden adlandırıldı - uzman tamamlandı. tüm hatalar düzeltildi. Başlık < At hamlesi ><At hamlesi>

at hareketi

Dosyalar:
Horse_move.mq5  190 kb
 


Aleksandr Klapatyuk :

Önceki Expert'e eklendi , Yatay çizgi için iki yol.

Olasılık 1: 1. satır, 4. satırı belirli bir mesafede açacak, 2. satır 3. satırı belirli bir mesafede açacak.

Olasılık 2: satır 7, fiyatı takip eden belirli bir mesafede satır 10'u açacak ve fiyat dokunduğunda komut tetiklenecek. 8. satır, 9. satırı belirli bir mesafede açacaktır, - 7 ve 10 ile aynı eylemler

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

Başka bir olasılık vardı - 1. satır 4 ve 9'u açacak. 2. satır 3 ve 10'u açacak.

7. satır 10 ve 3'ü açacaktır. satır 8, 9 ve 4'ü açacak

 input string    t3= "------ Obj:Name 1-2-3-4 ------" ;     // Имя Объекта
input string    InpObjUpNameZ           = "TOP 1" ;       // Obj: TOP (Name Obj) ВВЕРХУ 1
input string    InpObjDownNameZ         = "LOWER 2" ;     // Obj: LOWER (Name Obj) ВНИЗУ 2
input int       Step                    = 5 ;             // Obj: Шаг сетки, пунктов(0 = false)
input string    InpObjDownName0         = "TOP 3" ;       // Obj: TOP (Name Obj) ВВЕРХУ 3
input ENUM_TRADE_COMMAND InpTradeCommand=open_sell;     // Obj:  command:
input string    InpObjUpName0           = "LOWER 4" ;     // Obj: LOWER (Name Obj) ВНИЗУ 4
input ENUM_TRADE_COMMAND InpTradeCommand0=open_buy;     // Obj:  command:
 input string    t5= "- 2_Obj:Trailing Line 7-8-9-10 --- " ; // Trailing Obj:Line
input string    InpObjUpNameZx          = "TOP 7" ;       // Obj: TOP (Name Obj) ВВЕРХУ 7
input string    InpObjDownNameZx        = "LOWER 8" ;     // Obj: LOWER (Name Obj) ВНИЗУ 8
input int       StepZx                  = 5 ;             // Obj: Шаг сетки, пунктов(0 = false)
input string    InpObjUpNameX           = "TOP 9" ;       // Obj: TOP (Horizontal Line) ВВЕРХУ 9
input ENUM_TRADE_COMMAND InpTradeCommandX=open_buy;     // Obj:  command:
input string    InpObjDownNameX         = "LOWER 10" ;     // Obj: LOWER (Horizontal Line) ВНИЗУ 10
input ENUM_TRADE_COMMAND InpTradeCommand0X=open_sell;   // Obj:  command:
input ushort    InpObjTrailingStopX     = 5 ;             // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStepX     = 5 ;             // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

pozisyonların tersten açılması ve ayarlara dokunmamak için Obj: komutu:

bir terslik var

 input string    t6= "------ Obj: Revers Buy and Sell --" ; // Obj: Revers Buy and Sell
input bool      ObjRevers               = false ;         // Obj: Revers
Dosyalar:
Horse_move.mq5  190 kb
2.mq5  17 kb
 
Aleksandr Klapatyuk :

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

Başka bir olasılık daha vardı - 1. satır 4 ve 9'u açacak. 2. satır 3 ve 10'u açacak.

7. satır 10 ve 3'ü açacaktır. satır 8, 9 ve 4'ü açacak

pozisyonların tersten açılması ve ayarlara dokunmamak için Obj: komutu:

bir terslik var

Şimdi bir test başlattım - ay sonuna kadar dokunmayacağım, ne olacağını merak ediyorum. - çok, riske atıldı - kendisi bir şekilde hesaplıyor

Ölçek

 

öyle değil! yavaş ama artan

test1

 

Evet! o dümdüz önde

Alpari MT5

 
Aleksandr Klapatyuk :

yeniden adlandırıldı - uzman tamamlandı. tüm hatalar düzeltildi. Başlık < At hamlesi ><At hamlesi>

İlginç danışman.

 

giriş ayarlarında ayarla çift TargetProfit = 30000.00 ; // Hedef kâr

muhtemelen yeterli değil - daha fazlası gerekliydi. şimdi yeni giriş noktasını beklemeniz ve TargetProfit = 35000.00 hedefini belirlemeniz gerekiyor ; // Hedef kâr

 //+------------------------------------------------------------------+
input string    t0= "------ Parameters --------" ;         // Настройка Эксперта
input string    Template                = "ADX" ;         // Имя шаблона(without '.tpl')
input datetime HoursFrom               = D'1970.01.01' ; // Время старта Эксперта
input datetime HoursTo                 = D'2030.12.31' ; // Время закрытия всех позиций
input double    TargetProfit            = 900000.00 ;     // Целевая прибыль
input uint      maxLimits               = 1 ;             // Кол-во Позиции Открыть в одну сторону
input double    MaximumRisk             = 0.01 ;           // Maximum Risk in percentage
input double    DecreaseFactor          = 3 ;             // Descrease factor
input ENUM_LOT_OR_RISK InpLotOrRisk    = lots;           // Money management: Lot OR Risk

gösterge pivot çizgilerinden timezone.mq5 R2 -down S2-up satırından pozisyonları açar

anlık görüntü1

gösterge silinemez - satırları ertesi gün güncellenir

Alpari MT5

gösterge aşağıda - şimdi sitede göstergeye bir bağlantı arayacağım https://www.mql5.com/ru/code/1114

Dosyalar:
 
Aleksandr Klapatyuk :

giriş ayarlarında ayarla çift TargetProfit = 30000.00 ; // Hedef kâr

muhtemelen yeterli değil - daha fazlası gerekliydi. şimdi yeni giriş noktasını beklemeniz ve TargetProfit = 35000.00 hedefini belirlemeniz gerekiyor ; // Hedef kâr

gösterge pivot çizgilerinden timezone.mq5 R2 -down S2-up satırından pozisyonları açar

gösterge silinemez - satırları ertesi gün güncellenir

gösterge aşağıda - şimdi sitede göstergeye bir bağlantı arayacağım https://www.mql5.com/ru/code/1114

bu seçeneklerden biri. ama bir milyon seçenek var

lot hakkında söylemeyi unuttum - risk girişine ayarlayın ENUM_LOT_OR_RISK InpLotOrRisk = lotlar; // Para yönetimi: Lot VEYA Risk

(uzman bilgisi .log'da) uyarılar https://www.mql5.com/ru/docs/event_handlers/ondeinit
Документация по MQL5: Обработка событий / OnDeinit
Документация по MQL5: Обработка событий / OnDeinit
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Возвращает текстовое описания причины деинициализации            |
Dosyalar:
20191107.log  272 kb
 

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

düğmeler için başka bir yol buldu

 //+------------------------------------------------------------------+
//| Enum ENUM_BUTTON                                                 |
//+------------------------------------------------------------------+
enum ENUM_BUTTON
  {
   Button0= 0 ,   // ВЫКЛ
   Button1= 1 ,   // ВКЛ
   Button2= 2 ,   // ВКЛ: AVGiS
  };
//+------------------------------------------------------------------+

burayı seç

 input string    t9= "------ Button: AVGiS -----" ;         // AVGiS (Или обычный режим Buy/Sell)
input ENUM_BUTTON Buttons              = Button0;       // Вкл: Копки Buy/Sell
input bool      ObjectLineX             = false ;         // Button: Horizontal Line(true) || Buy/Sell(false)
input bool      TickRevers              = false ;         // Button: Revers
input int       TrailingStop_STOP_LEVEL = 350 ;           // Trailing Stop LEVEL
input ENUM_TIMEFRAMES _period          = PERIOD_CURRENT ; // period
input int       limit_total_symbol      = 190 ;           // limit_total_symbol
input int       limit_total             = 190 ;           // limit_total
//---

bir pozisyon açarken, hemen bir stoploss yerleştirilir (sarı yatay çizgi )

burada yapılandırılabilir - giriş çift InpStopLoss = 55 ; // Obj: Zararı Durdur, pip olarak (1.00045-1.00055=1 pip)

0'a ayarlı devre dışı bırak

 input string    t2= "------ Obj:Trailing Line     --- " ;   // Trailing Obj:Line
input double    InpStopLoss             = 55 ;             // Obj: Stop Loss, in pips (1.00045-1.00055=1 pips)
input ushort    InpObjTrailingStop      = 27 ;             // Obj: Trailing Stop (distance from price to object, in pips)
input ushort    InpObjTrailingStep      = 9 ;             // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
Dosyalar:
Horse_move.mq5  198 kb
2.mq5  17 kb