Помощник закрытия позиции, если цена пересекла линию: Правило закрытия: цена Open и цена Close текущего бара должны оказаться по разные стороны от линии. Имя линии задаётся в параметре "Line name" - эту линию пользователь проводит сам. Тип линии может быть...
//+------------------------------------------------------------------+//| Get value of buffers |//+------------------------------------------------------------------+double iGetArray( constint handle, constint buffer, constint start_pos, constint count, double &arr_buffer[])
{
bool result= true ;
if (! ArrayIsDynamic (arr_buffer))
{
Print ( "This a no dynamic array!" );
return ( false );
}
ArrayFree (arr_buffer);
//--- reset error codeResetLastError ();
//--- fill a part of the iBands array with values from the indicator bufferint copied= CopyBuffer (handle,buffer,start_pos,count,arr_buffer);
if (copied!=count)
{
//--- if the copying fails, tell the error codePrintFormat ( "Failed to copy data from the indicator, error code %d" , GetLastError ());
//--- quit with zero result - it means that the indicator is considered as not calculatedreturn ( false );
}
return (result);
}
//+------------------------------------------------------------------+//| Search trading signals |//+------------------------------------------------------------------+bool SearchTradingSignals( void )
{
//--- we work only at the time of the birth of new bardatetime 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 parametersinputuint maxLimits = 1 ; // Кол-во Позиции Открыть в одну сторонуinputdouble InpLots = 0.01 ; // Lotsinputushort InpSignalsFrequency = 10 ; // Search signals, in seconds (min value "10")inputstring InpNameR = "LineR" ; // Line name (Horizontal Line or Trend Line)input ENUM_TRADE_COMMAND InpTradeCommandR = open_buy; // Trade command:inputstring InpNameS = "LineS" ; // Line name (Horizontal Line or Trend Line)input ENUM_TRADE_COMMAND InpTradeCommandS = open_sell; // Trade command:inputstring short_name = "Examples\\ZigzagColor" ; // Name Indicatorsinput ENUM_TRADE_COMMAND InpTradeCommandY = open_buy; // Trade command: (BuyBuffer Indicators)input ENUM_TRADE_COMMAND InpTradeCommandU = open_sell; // Trade command: (SellBuffer Indicators)inputbool ObjRevers = false ; // Obj: Revers//---
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.
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
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.
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
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
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
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
şimdi ayarlarda
göstergeden gelen sinyali kontrol etme
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
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.
-------------------------------------------------- -----------
lot parametresi.
0,06'yı bir konumla veya konum sayısını 6'ya 0,01 olarak ayarlayabilirsiniz.
-------------------------------------------------- -------------
Kar Al ile parametre.
Nokta sayısına göre çalışır ("0" varsa pozisyonu kapatır), mesafeyi belirtmeniz gerekir.
XXX_Trailing Line.mq5
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
Semafor göstergelerini kullanan en basit ticaret sistemleri
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:
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)
ve OnTick() içinde
SelectPosition() 'ın bu durumda geçmesi gerektiği ortaya çıktı