Помощник закрытия позиции, если цена пересекла линию: Правило закрытия: цена Open и цена Close текущего бара должны оказаться по разные стороны от линии. Имя линии задаётся в параметре "Line name" - эту линию пользователь проводит сам. Тип линии может быть...
//+------------------------------------------------------------------+//| 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 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 = close_all; // Trade command:inputbool ObjRevers = false; // Obj: Reversinputstring InpNameS = "LineS"; // Line name (Horizontal Line or Trend Line)input ENUM_TRADE_COMMAND InpTradeCommandS = close_all; // Trade command:inputulong InpMagic = 78712995; // Magic number//---
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
в настройках теперь так
//--- 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//---
Добавил и Trailing Stop от Горизонтальных линии . Вроде всё добавил, осталось проверить работоспособность.
Вот такими стали настройки
Принцип работы, вот этих параметров.
Когда средства, достигнут заданной цели, все позиции закроются на всех открытых парах, и графики все сменятся на шаблон "ADX"
( Важно - обязательно, чтобы цифры были, выше вашего баланса, вписаны в настройках) а то, Эксперт, закроет все позиции, которые открыты и сменит графики шаблона
На данный момент в Code Base имеется достаточно много подобных индикаторов, в контексте данной статьи я сделаю только несколько ссылок на исходные ресурсы:
Индикатор имеет 4 горизонтальных линии - 2 из них работают от индикатора Heiken_Ashi
а 2 уровни от которых можно совершать покупку или продажу. когда пересекают красную, срабатывает один сигнал - когда пересекают голубую, другой сигнал
-------------
когда находится в середине (между линиями (красной и голубой) ) сигналы не работают - сработают, как выйдут в какую не будь сторону
Индикатор имеет 4 горизонтальных линии - 2 из них работают от индикатора Heiken_Ashi
а 2 уровни от которых можно совершать покупку или продажу. когда пересекают красную, срабатывает один сигнал - когда пересекают голубую, другой сигнал
-------------
когда находится в середине (между линиями (красной и голубой) ) сигналы не работают - сработают, как выйдут в какую не будь сторону
К этому Индикатору - подогнал Эксперта
на график нужно установить Индикатор, после устанавливаем Эксперта на тот же график
---------------------
открылась позиция - удалился индикатор. через время я установил опять Индикатор ( как проверить работу Эксперта )
---------------
когда срабатывает сигнал, Открывается позиция и удаляется Индикатор вместе с линиями
Совместил двух экспертов для ручной торговли
этот https://www.mql5.com/ru/code/24803
и этот https://www.mql5.com/ru/code/26353
Совместил двух экспертов для ручной торговли
этот https://www.mql5.com/ru/code/24803
и этот https://www.mql5.com/ru/code/26353
Добавил ещё одну линию
Добавил ещё одну линию
Для полноценного Эксперта, не хватает -
1 - Stop Loss , Take Profit в пунктах(не видимого)
2 - Trailing Stop от Горизонтальных линии
3 - Сигнал от Индикатора
Буду дорабатывать этого Эксперта 2_LineOpenClose.mq5
Для полноценного Эксперта, не хватает -
1 - Stop Loss , Take Profit в пунктах(не видимого)
2 - Trailing Stop от Горизонтальных линии
3 - Сигнал от Индикатора
Буду дорабатывать этого Эксперта 2_LineOpenClose.mq5
Добавил - Сигнал от Индикатора
вот таким способом
в настройках теперь так
проверка работы сигнала от индикатора
Для полноценного Эксперта, не хватает -
1 - Stop Loss , Take Profit в пунктах(не видимого)
2 - Trailing Stop от Горизонтальных линии
3 - Сигнал от Индикатора
Буду дорабатывать этого Эксперта 2_LineOpenClose.mq5
Добавил и Trailing Stop от Горизонтальных линии . Вроде всё добавил, осталось проверить работоспособность.
Вот такими стали настройки
Добавил и Trailing Stop от Горизонтальных линии . Вроде всё добавил, осталось проверить работоспособность.
Вот такими стали настройки
Принцип работы, вот этих параметров.
Когда средства, достигнут заданной цели, все позиции закроются на всех открытых парах, и графики все сменятся на шаблон "ADX"
( Важно - обязательно, чтобы цифры были, выше вашего баланса, вписаны в настройках) а то, Эксперт, закроет все позиции, которые открыты и сменит графики шаблона
-------------------------------------------------------------
параметр с лотом.
можно как, одной позицией установить 0.06 или количество позиций 6 по 0.01
---------------------------------------------------------------
параметр с Take ProfitТ.
Срабатывает от количества пунктов ( если будет "0" будет закрывать позицию) нужно задавать обязательно расстояние.
XXX_Trailing Line.mq5
Добавил - Сигнал от Индикатора
вот таким способом
в настройках теперь так
проверка работы сигнала от индикатора
От индикатора , только открывает позиции, для закрытия , я взял способ из эксперта в терминале( Moving Average)
не много подогнал реверс
Простейшие торговые системы с использованием семафорных индикаторов
Образцы типичных семафорных, сигнальных индикаторов
На данный момент в Code Base имеется достаточно много подобных индикаторов, в контексте данной статьи я сделаю только несколько ссылок на исходные ресурсы:
От индикатора , только открывает позиции, для закрытия , я взял способ из эксперта в терминале( Moving Average)
не много подогнал реверс
Что то закрытием, не так. Ищу способ, как поправить функцию, закрытия позиции от Индикатора
-------------------------------------------------------------------
Вроде поправил - добавил из того же Эксперта( Moving Average)
и в OnTick()
получается через это дело должно проходить SelectPosition()