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

 

Göstergenin 4 yatay çizgisi vardır - 2 tanesi Heiken_Ashi göstergesi tarafından desteklenmektedir

ve satın alma veya satış yapabileceğiniz 2 seviye. kırmızıyı geçtiklerinde bir sinyal tetiklenir - maviyi geçtiklerinde başka bir sinyal

EURJPYM1

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

ortadayken (çizgiler arasında (kırmızı ve mavi)), sinyaller çalışmıyor - herhangi bir yöne çıktıklarında çalışacaklar

Dosyalar:
LN_2.mq5  22 kb
 
Alexsandr San :

Göstergenin 4 yatay çizgisi vardır - 2 tanesi Heiken_Ashi göstergesi tarafından desteklenmektedir

ve satın alma veya satış yapabileceğiniz 2 seviye. kırmızıyı geçtiklerinde bir sinyal tetiklenir - maviyi geçtiklerinde başka bir sinyal

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

ortadayken (çizgiler arasında (kırmızı ve mavi)), sinyaller çalışmıyor - herhangi bir yöne çıktıklarında çalışacaklar

Bu Göstergeye göre - Uzmanı ayarladı

Göstergeyi çizelgeye kurmanız, ardından aynı çizelgeye Uzman Danışmanı kurmanız gerekir.

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

bir pozisyon açılır - gösterge kaldırılır. bir süre sonra Göstergeyi tekrar kurdum (Uzman'ın çalışması nasıl kontrol edilir)

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

sinyal tetiklendiğinde bir pozisyon açılır ve gösterge çizgilerle birlikte kaldırılır.


Dosyalar:
Exp_LN_2.mq5  20 kb
 

Manuel ticaret için birleştirilmiş iki uzman

bu https://www.mql5.com/ru/code/24803

ve bu https://www.mql5.com/ru/code/26353

AutoClose Line
AutoClose Line
  • www.mql5.com
Помощник закрытия позиции, если цена пересекла линию: Правило закрытия: цена Open и цена Close текущего бара должны оказаться по разные стороны от линии. Имя линии задаётся в параметре "Line name" - эту линию пользователь проводит сам. Тип линии может быть...
Dosyalar:
 
Alexsandr San :

Manuel ticaret için birleştirilmiş iki uzman

bu https://www.mql5.com/ru/code/24803

ve bu https://www.mql5.com/ru/code/26353

Başka bir satır eklendi

 //+------------------------------------------------------------------+
//| Enum Lor or Risk                                                 |
//+------------------------------------------------------------------+
enum ENUM_TRADE_COMMAND
  {
   close_buys= 0 ,     // Close All Buy's
   close_sells= 1 ,     // Close All Sell's
   close_all= 2 ,       // Close All Buy's and Sell's
   open_buy= 3 ,       // Open Buy
   open_sell= 4 ,       // Open Sell
   open_buy_sell= 5 ,   // Open Buy and Sell
  };
//--- input parameters
input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots                      = 0.01 ;               // Lots
input ushort    InpSignalsFrequency          = 10 ;                 // Search signals, in seconds (min value "10")
input string    InpNameR                     = "LineR" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = close_all;         // Trade command:
input bool      ObjRevers                    = false ;             // Obj: Revers
input string    InpNameS                     = "LineS" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = close_all;         // Trade command:
input ulong     InpMagic                     = 78712995 ;           // Magic number
//---
Dosyalar:
 
Alexsandr San :

Başka bir satır eklendi

Tam teşekküllü bir Uzman için yeterli değil -

1 - Zarar Durdur, Puan olarak Kar Al (görünmez)

2 - Yatay çizgilerden İzleyen Durdurma

3 - Göstergeden Gelen Sinyal

Bu Uzman Danışmanı geliştireceğim 2_LineOpenClose.mq5  

 //--- input parameters
input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots                      = 0.01 ;               // Lots
input ushort    InpSignalsFrequency          = 10 ;                 // Search signals, in seconds (min value "10")
input string    InpNameR                     = "LineR" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = close_all;         // Trade command:
input bool      ObjRevers                    = false ;             // Obj: Revers
input string    InpNameS                     = "LineS" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = close_all;         // Trade command:
input ulong     InpMagic                     = 78712995 ;           // Magic number
//---
 
Alexsandr San :

Tam teşekküllü bir Uzman için yeterli değil -

1 - Zarar Durdur, Puan olarak Kar Al (görünmez)

2 - Yatay çizgilerden İzleyen Durdurma

3 - Göstergeden Gelen Sinyal

Bu Uzman Danışmanı geliştireceğim 2_LineOpenClose.mq5  

Eklendi - Göstergeden Sinyal

Böylece

 //+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray( const int handle, const int buffer, const int start_pos, const int count, double &arr_buffer[])
  {
   bool result= true ;
   if (! ArrayIsDynamic (arr_buffer))
     {
       Print ( "This a no dynamic array!" );
       return ( false );
     }
   ArrayFree (arr_buffer);
//--- reset error code
   ResetLastError ();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied= CopyBuffer (handle,buffer,start_pos,count,arr_buffer);
   if (copied!=count)
     {
       //--- if the copying fails, tell the error code
       PrintFormat ( "Failed to copy data from the indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated
       return ( false );
     }
   return (result);
  }
//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool SearchTradingSignals( void )
  {
//--- we work only at the time of the birth of new bar
   datetime time_0= iTime (m_symbol.Name(), Period (), 0 );
   if (time_0==ExtPrevBarsY)
       return ( true );
   ExtPrevBarsY=time_0;
   if (!m_symbol.RefreshRates())
     {
      ExtPrevBarsY= 0 ;
       return ( false );
     }
//---
   double BuyBuffer[];
   double SellBuffer[];
   ArraySetAsSeries (BuyBuffer, true );
   ArraySetAsSeries (SellBuffer, true );
   if (!iGetArray(handle_iCustom, 1 , 0 , 2 ,BuyBuffer) || !iGetArray(handle_iCustom, 0 , 0 , 2 ,SellBuffer))
     {
      ExtPrevBarsY= 0 ;
       return ( false );
     }
//---
   if (BuyBuffer[ 1 ]!= 0.0 )
     {
       switch (InpTradeCommandY)
        {
         case   close_buys:
            ExtNeedCloseBuy= true ;
             if (LongObjClosed())
               break ;
         case   close_sells:
            ExtNeedCloseSell= true ;
             if (ShortObjClosed())
               break ;
         case close_all:
            ExtNeedCloseAll= true ;
             if (LongShortObjClosed())
               break ;
         case open_buy:
            ExtNeedOpenBuy= true ;
             if (LongObjOpened())
               break ;
         case open_sell:
            ExtNeedOpenSell= true ;
             if (ShortObjOpened())
               break ;
         default :
            ExtNeedOpenBuySell= true ;
             if (LongShortObjOpened())
               break ;
        }
     }
   if (SellBuffer[ 1 ]!= 0.0 )
     {
       switch (InpTradeCommandU)
        {
         case   close_buys:
            ExtNeedCloseBuy= true ;
             if (LongObjClosed())
               break ;
         case   close_sells:
            ExtNeedCloseSell= true ;
             if (ShortObjClosed())
               break ;
         case close_all:
            ExtNeedCloseAll= true ;
             if (LongShortObjClosed())
               break ;
         case open_buy:
            ExtNeedOpenBuy= true ;
             if (LongObjOpened())
               break ;
         case open_sell:
            ExtNeedOpenSell= true ;
             if (ShortObjOpened())
               break ;
         default :
            ExtNeedOpenBuySell= true ;
             if (LongShortObjOpened())
               break ;
        }
     }
//---
   return ( true );
  }
//+------------------------------------------------------------------+

şimdi ayarlarda

 //--- input parameters
input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots                      = 0.01 ;               // Lots
input ushort    InpSignalsFrequency          = 10 ;                 // Search signals, in seconds (min value "10")
input string    InpNameR                     = "LineR" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = open_buy;           // Trade command:
input string    InpNameS                     = "LineS" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = open_sell;         // Trade command:
input string    short_name             = "Examples\\ZigzagColor" ; // Name Indicators
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_buy;           // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = open_sell;         // Trade command: (SellBuffer Indicators)
input bool      ObjRevers                    = false ;             // Obj: Revers
//---

göstergeden gelen sinyali kontrol etme

eşit

grafik

Dosyalar:
XXX_Ind.mq5  52 kb
 
Alexsandr San :

Tam teşekküllü bir Uzman için yeterli değil -

1 - Zarar Durdur, Puan olarak Kar Al (görünmez)

2 - Yatay çizgilerden İzleyen Durdurma

3 - Göstergeden Gelen Sinyal

Bu Uzman Danışmanı geliştireceğim 2_LineOpenClose.mq5  

Yatay Çizgilerden Eklenen ve İzleyen Stop. Her şey eklenmiş gibi görünüyor, performansı kontrol etmeye devam ediyor.

İşte ayarlar

 //+------------------------------------------------------------------+
input string    t= "-----  Parameters         -----" ;               //
input string    Template                     = "ADX" ;             // Имя шаблона(without '.tpl')
input double    TargetProfit                 = 999999.99 ;         // Цель Баланса(Ваш Баланс + сумма)
input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots                      = 0.01 ;               // Lots
input int       InpTakeProfit                = 50 ;                 // Take Profit ("0"-No. 5<100)
input string    t0= "----- Trailing Line      -----" ;               //
input string    InpObjUpName                 = "TOP" ;             // Obj: TOP (Horizontal Line)
input ENUM_TRADE_COMMAND InpTradeCommand    = close_sells;       // Obj:  command:
input string    InpObjDownName               = "LOWER" ;           // Obj: LOWER (Horizontal Line)
input ENUM_TRADE_COMMAND InTradeCommand     = close_buys;         // Obj:  command:
input ushort    InpObjTrailingStop           = 30 ;                 // 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    t1= "----- Line name: 1       -----" ;               //
input string    InpNameR                     = "LineR" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = open_buy;           // Trade command:
input string    t2= "----- Line name: 2       -----" ;               //
input string    InpNameS                     = "LineS" ;           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = open_sell;         // Trade command:
input string    t3= "----- Indicators:        -----" ;               //
input string    short_name                   = "Examples\\ZigzagColor" ; // Name Indicators
input bool      InpIndicators                = false ;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_buy;           // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = open_sell;         // Trade command: (SellBuffer Indicators)
input string    t4= "----- Revers Buy><Sell   -----" ;               //
input bool      ObjRevers                    = false ;             //  Revers
//---


Dosyalar:
 
Alexsandr San :

Yatay Çizgilerden Eklenen ve İzleyen Stop. Her şey eklenmiş gibi görünüyor, performansı kontrol etmeye devam ediyor.

İşte ayarlar  

Çalışma prensibi, işte bu parametreler.

Fonlar verilen hedefe ulaştığında, tüm açık çiftlerdeki tüm pozisyonlar kapatılacak ve çizelgelerin tümü "ADX" modeline dönüşecektir.

(Önemli - ayarlarda girilen sayıların bakiyenizden daha yüksek olması zorunludur) Aksi takdirde, Uzman açık olan tüm pozisyonları kapatacak ve şablonun tablolarını değiştirecektir.

 //+------------------------------------------------------------------+
input string    t= "-----  Parameters         -----" ;               //
input string    Template                     = "ADX" ;             // Имя шаблона(without '.tpl')
input double    TargetProfit                 = 999999.99 ;         // Цель Баланса(Ваш Баланс + сумма)

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

lot parametresi.

0,06'yı bir konumla veya konum sayısını 6'ya 0,01 olarak ayarlayabilirsiniz.

 input uint      maxLimits                    = 1 ;                 // Кол-во Позиции Открыть в одну сторону
input double    InpLots                      = 0.01 ;               // Lots

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

Kar Al ile parametre.

Nokta sayısına göre çalışır ("0" varsa pozisyonu kapatır), mesafeyi belirtmeniz gerekir.

 input int       InpTakeProfit                = 50 ;                 // Take Profit ("0"-No. 5<100)

XXX_Trailing Line.mq5  

 
Alexsandr San :

Eklendi - Göstergeden Sinyal

Böylece

şimdi ayarlarda

göstergeden gelen sinyali kontrol etme

Göstergeden sadece pozisyon açar, kapamak için terminaldeki uzmandan yöntemi aldım (Hareketli Ortalama)

çok fazla ayarlanmamış ters

 //+------------------------------------------------------------------+
//| Check for close position conditions                              |
//+------------------------------------------------------------------+
void CheckForClose( void )
  {
//---
   double BuyBuffer[];
   double SellBuffer[];
   ArraySetAsSeries (BuyBuffer, true );
   ArraySetAsSeries (SellBuffer, true );
   if (!iGetArray(handle_iCustom, 1 , 0 , 2 ,BuyBuffer) || !iGetArray(handle_iCustom, 0 , 0 , 2 ,SellBuffer))
     {
       return ;
     }
//--- positions already selected before
   bool signal= false ;
   long type= PositionGetInteger ( POSITION_TYPE );
   if (ObjRevers)
     {
       if (type==( long ) POSITION_TYPE_BUY && BuyBuffer[ 1 ]!= 0.0 )
         signal= true ;
       if (type==( long ) POSITION_TYPE_SELL && SellBuffer[ 1 ]!= 0.0 )
         signal= true ;
     }
   if (!ObjRevers)
     {
       if (type==( long ) POSITION_TYPE_BUY && SellBuffer[ 1 ]!= 0.0 )
         signal= true ;
       if (type==( long ) POSITION_TYPE_SELL && BuyBuffer[ 1 ]!= 0.0 )
         signal= true ;
     }
//--- additional checking
   if (signal)
     {
       if ( TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && Bars ( _Symbol , _Period )> 100 )
         m_trade.PositionClose( _Symbol , 3 );
     }
//---
  }
//+------------------------------------------------------------------+

enstantane fotoğraf

Semafor göstergelerini kullanan en basit ticaret sistemleri

13 Ocak 2012, 13:27



Tipik semafor örnekleri, sinyal göstergeleri

Şu anda, Code Base'de bu tür göstergelerin birçoğu var, bu makale bağlamında kaynak kaynaklara sadece birkaç bağlantı yapacağım:


Dosyalar:
 
Alexsandr San :

Göstergeden sadece pozisyon açar, kapamak için terminaldeki uzmandan yöntemi aldım (Hareketli Ortalama)

çok fazla ayarlanmamış ters

Bir şey kapanıyor, öyle değil. Göstergeden bir pozisyonu kapatma işlevini düzeltmenin bir yolunu arıyorum

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

Düzeltilmiş gibi görünüyor - aynı Uzman Danışmandan eklendi (Hareketli Ortalama)

 //+------------------------------------------------------------------+
//| Position select depending on netting or hedging                  |
//+------------------------------------------------------------------+
bool SelectPosition()
  {
   bool res= false ;
//--- check position in Hedging mode
   if (ExtHedging)
     {
       uint total= PositionsTotal ();
       for ( uint i= 0 ; i<total; i++)
        {
         string position_symbol= PositionGetSymbol (i);
         if ( _Symbol ==position_symbol && InpMagic== PositionGetInteger ( POSITION_MAGIC ))
           {
            res= true ;
             break ;
           }
        }
     }
//--- check position in Netting mode
   else
     {
       if (! PositionSelect ( _Symbol ))
         return ( false );
       else
         return ( PositionGetInteger ( POSITION_MAGIC )==InpMagic); //---check Magic number
     }
//--- result for Hedging mode
   return (res);
  }
//+------------------------------------------------------------------+

ve OnTick() içinde

       if (InpCloseOpposite && InpIndicators)
        {
         //---
         if (SelectPosition())
            CheckForClose();
         else
            SearchTradingSignals();
        }
       if (!InpCloseOpposite && InpIndicators)
        {
         SearchTradingSignals();
        }

SelectPosition() 'ın bu durumda geçmesi gerektiği ortaya çıktı

Dosyalar: