Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Вопрос прогерам!
Сначала о сове:
Советник при определенных настройках, сам меняет свой Magic, в процессе работы.
Все работает как надо, но есть проблема!

Можно конечно и в файл, но может лучше не менять магик?
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано



Можно конечно и в файл, но может лучше не менять магик?

Так как? Если можно! Магик НЕОБХОДИМО менять!
Необходимо? - для чего? Ведь магик изначально задумывался для того, чтобы советник отличал "свои" ордера от "чужих".
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Решил и я попробовать освоить MQL4. xbms, "домашка" ещё проверяется? Если да, то прикладываю на проверку, пока первые три.

Правда эдитор немного ругается при компиляции, но я думаю это не критично и связано с изменениями вступившими после записи уроков. В дальнейшем поправится, а то пока точно не знаю как это устранить, ведь в видео про это не было.

Test_1.mq4
Test_2.mq4
Test_3.mq4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Необходимо? - для чего? Ведь магик изначально задумывался для того, чтобы советник отличал "свои" ордера от "чужих".


Ну вот такая у меня стратегия! Советник обрабатывает ордер по определенному алгоритму, после чего открывает новый посредством смены магика, и тем самым доливает ордера!
Зачем писать кучу кода, когда можно обойтись простой сменой магика! Изменено пользователем Enter
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Необходимо? - для чего? Ведь магик изначально задумывался для того, чтобы советник отличал "свои" ордера от "чужих".


Ну вот такая у меня стратегия! Советник обрабатывает ордер по определенному алгоритму, после чего открывает новый посредством смены магика, и тем самым доливает ордера!
Зачем писать кучу кода, когда можно обойтись простой сменой магика!
"простой сменой магика!" - это круто! Только я не пойму почему Вы пишите в этой теме? судя по тексту программировать Вы умеете.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Только я не пойму почему Вы пишите в этой теме? судя по тексту программировать Вы умеете.


Подскажите! в какой теме мне могут помочь?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте!
Подскажите пожалуйста: как найти тип последнего закрытого ордера и если он закрылся по тейкпрофиту одно условие если по стоплоссу другое условие. За ранние всех благодарю.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Привет ВСЕМ!!!
Вопрос прогерам!
Сначала о сове:
Советник при определенных настройках, сам меняет свой Magic, в процессе работы.
Все работает как надо, но есть проблема!
В начале новой недели или при каких то сбоях в связи, он возвращается к первоначальному Magic, который прописан в настройках.
Как сделать, например так что бы советник скидывал последние настройки во внешний файл, и подгружал при необходимости.
При сбоях и в начале новой недели?
Ну или при открытии терминала, в котором он же уже работал и выставил ордера! Например при отключении электроэнергии в сети!!!


Так если известно условие смены Magic'a - начало недели - то можно найти в коде, где происходит эта смена и там поправить. Это раз.
И при сбоях связи - Magic ордера измениться не может. Он или есть и передается совой, или его нет. А в процессе передачи по каналам связи - никто ничего не меняет. Это два.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Так если известно условие смены Magic'a - начало недели - то можно найти в коде, где происходит эта смена и там поправить. Это раз.
И при сбоях связи - Magic ордера измениться не может. Он или есть и передается совой, или его нет. А в процессе передачи по каналам связи - никто ничего не меняет. Это два.


Смена магика происходит только тогда когда ситуация на рынке совпадает с условиями настроек советника! Сова работает как часы, но на реале в связи со сбоями, перегрузками терминалов от ДЦ и тд... Сбивается и алгоритм совы!!!
Мне просто надо знать как это делается!!!! ПЕРЕДАЧА НАСТРОЕК СОВЕТНИКА ВО ВНЕШНИЙ ФАЙЛ И ОБРАТНО!!!
Новый магик хранится в памяти совы, а в настройках естественно начальный!!!
Что то типа set-файла, но чтобы передавался в сову на автомате, Иначе меняю при сбоях магик в ручную!!!
Изменено пользователем Enter
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Можно воспользоваться этой функцией, возвращающей тип последней позиции:

Функция GetTypeLastClosePos().
Эта функция возвращает тип последней закрытой позиции или -1. Более точный отбор учитываемых позиций задаётся внешними параметрами:

sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента.
Значение по умолчанию - "" означает любой рыночный инструмент. NULL означает текущий инструмент.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Возвращает тип последней закрытой позиции или -1 |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
int GetTypeLastClosePos(string sy="", int mn=-1) {
datetime t;
int i, k=OrdersHistoryTotal(), r=-1;

if (sy=="0") sy=Symbol();
for (i=0; i if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (mn if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (t t=OrderCloseTime();
r=OrderType();
}
}
}
}
}
return(r);
}

Чтобы узнать прибыльная ли позиция, можно в этот же код добавить проверку типа
if (OrderProfit()предварительно в глобальных переменных объявив переменную:
bool IsLossPos;
Изменено пользователем NTuner
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
0ll, у тебя случайно не завалялся исходник ind_Speed, а то вроде ты с ним работал. Поделись, если не затруднит.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


0ll, у тебя случайно не завалялся исходник ind_Speed, а то вроде ты с ним работал. Поделись, если не затруднит.

Дык я его и писал, только найти нужно... Как найду отпишусь в личку.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток, господа, помогите довести до ума советник. Суть проблемы такова:надо добавить функцию, чтобы после закрытия сделки в buy, например, следующая могла быть только в Sell и наоборот после сделки в Sell мог открываться только Buy . Как это сделать подскажите, текст советника ниже:

Спойлер




extern double Lots = 1;
extern int Slippage = 5;
extern string comment = "WT BOT";
extern int Magic = 123;
extern int startHour =10;
extern int endHour =18;
extern int tf_filtr = 60;
extern int takeprofit = 10;
extern int stoploss = 5;


extern string A2 = "--- Параметры индикатора ---";
extern int T3Period = 8;
extern int T3Price = PRICE_CLOSE;
extern double b = 0.618;
extern string TimeFrame = "current time frame";
extern int BarCount = 1500;

//----- Параметры индикаторов -----
extern string A = "--- СИГНАЛЫ ---";
extern bool ByBar = true; //Для побарового режима. При открытии свечи. Иначе - на каждом тике.
extern int SignalBar = 1; //Бар, на котором проверяется сигнал индикатора



double Sig1, Sig2, SL, TP;


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Digits == 3 || Digits == 5)
{
takeprofit *= 10;
stoploss *= 10;
Slippage *= 10;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{



// индикатор в осциллографе
Sig1 = NormalizeDouble(iCustom(Symbol(), 0, "BB_MACD_v1.01", 0, 1), Digits); //лайм
Sig2 = NormalizeDouble(iCustom(Symbol(), 0, "BB_MACD_v1.01", 1, 1), Digits); //магнета


int Sig = Signal();

if((Sig == 1 && High[1] > High[2])&&(Sig1 != EMPTY_VALUE && Sig2 == EMPTY_VALUE) && (CountSell() > 0)) //лайм и есть ордера на продажу. то закрываем
{
for (int i = OrdersTotal ()-1; i >=0; i--)
{
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderMagicNumber () == Magic && OrderType() == OP_SELL )
OrderClose (OrderTicket(), OrderLots (), Ask, Slippage, Black);
}

}

}

if((Sig == -1 && Low[1] 0))//магнета и есть ордера на покупку. то закрываем

{
for (i = OrdersTotal ()-1; i >=0; i--)
{
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true)
{
if (OrderMagicNumber () == Magic && OrderType() == OP_BUY )
OrderClose (OrderTicket(), OrderLots (), Bid, Slippage, Black);
}

}

}
if((Hour()>=startHour && Hour() High[2])&&(Sig1 != EMPTY_VALUE && Sig2 == EMPTY_VALUE) && (CountBuy() == 0))//зеленый и нет ордера на покупку. то открываем
{
SL = NormalizeDouble(Low[1]-stoploss*Point,Digits);
TP = NormalizeDouble(High[1]+takeprofit*Point,Digits);

OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, comment, Magic, 0, Blue);

}
if((Hour()>=startHour && Hour() {
SL = NormalizeDouble(High[1]+stoploss*Point,Digits);
TP = NormalizeDouble(Low[1]-takeprofit*Point,Digits);

OrderSend (Symbol(), OP_SELL, Lots, Bid, Slippage, SL, TP, comment, Magic, 0, Red);


}

return(0);
}
//+------------------------------------------------------------------+
int CountSell ()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >= 0; trade--)
{
OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic)
{
if (OrderType () == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+

int CountBuy ()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade >= 0; trade--)
{
OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic)
{
if (OrderType () == OP_BUY)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//T3_08
int Signal()
{
double L1,L2,L1a,L2a;

L1 = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,0,SignalBar);
L2 = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,1,SignalBar);
L1a = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,0,SignalBar+1);
L2a = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,1,SignalBar+1);

if(L1 if(L1 > L2 && L1a > L2a ) return(-1);
return(0);
}


Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Чисто теоретически:
Когда сова запускается ведь приоритета нет? - и как-то работает.
После закрытия Бай ждем сигнала Селл - а его нет... надо-же отменить ожидание Селл в конце-концов - либо по индикатору либо по-времени (имхо).

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Через стандартную функцию не считается, выдает всегда ноль:

double OnTester()   { 
double sharp=TesterStatistics(STAT_SHARPE_RATIO);
return(sharp);
}

OnTester returns 0.00000000000000
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добрый день, в советнике есть следующий код:

if (HourStartAUDUSD1 == TimeHour(TimeCurrent()) && MinuteStartAUDUSD1 == TimeMinute(TimeCurrent())&& ExistOrders("AUDUSD.f")==0 )
{
bidAUDUSD =MarketInfo("AUDUSD.f",MODE_BID);
ticket = OrderSendX("AUDUSD.f", OP_SELL, Lots, bidAUDUSD, slippage, 0, 0, comment, Magic, 0, Blue);
}
далее идет такой же код но для другой пары. время открытия ордеров одинаковое допустим 15.00.
на Alpari на 509 билде открывает оба ордера ( 4 одновременно тоже открывает) а на Roboforex 670 bild, открывает только один, и даже не первый по коду. AUDUSD.f это название валютной пары на ECN -Fix счете Roboforex.

Понятно что можно открытие ордеров сделать под общим временем, но переписывать не охота. кт оподскажет в чем мб причина данной проблемы и как с ней бороться, мб ли это из-за 670 bilda или из-за Roboforex? спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Приветствую всех
Столкнулся вот с какой проблемой я скопировал с другого рабочего советника функцию задача которой контроль количества открытых ордеров там от куда я ее скопировал она работает а у меня нет вот эта функция
int CountTrades()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
}

return(count);
}
и вызов функции
if (CountTrades() == 0)
я попытался выяснить почему и вот что у меня получилось
если установить ордерсенд между фигурными скобками
if (CountTrades() == 0)
{
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);
}
функция работает как должна а именно если открытых ордеров нет то открывается ордер не важно какой я для примера взял на покупку и вот что получилось ордер открылся и закрылся согласно тейкпрофиту или стоплоссу и только потом открылся следующий ордер мне так и надо
если без фигурных скобак
if (CountTrades() == 0)
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
SL = NormalizeDouble(Ask - StopLoss * Point, Digits);
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);
то тогда ордера открываются на каждом тике и не по одному а очень много я решил поставить скобки но когда я пишу условие дальше открываются сразу более 500 ордеров в промежутке 10 пунктов
есть какое то правило выставление фигурных скобак

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


есть какое то правило выставление фигурных скобак

Да, оно есть!!!!!!!!!!!
Фигурные скобки объединяют несколько операторов в один - составной. читать здесь
если фиг. скобок нет - после if(true) выполняется первый, а остальные на каждом тике.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Помогите пожалуйста, хотел вставить мартина но он почему то не работает
int start()

{
if (Hour()>=Hour_start && Hour() //инициализация параметров

{
int ticket = 0;
int old_order_type = OP_SELL;

//ищем среди всех открытых ордеров открытый советником ордер
RefreshRates();
for ( int trade = OrdersTotal() - 1; trade >= 0; trade-- )
{
//проверяем есть ли среди всех открытых ордеров именно тот ордер, который открыт данным советником.
if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
{
//если есть незакрытый ордер - выходим
return (0);
}
}
//нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер
for ( trade = OrdersHistoryTotal() - 1; trade >= 0; trade-- )
{
if ( OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
{
old_order_type = OrderType();
if ( OrderProfit() return (OrderType());
}
}

//если раньше покупали, то теперь продаем
if ( old_order_type == OP_BUY )
{
lastlot = FindLastLots(OP_BUY);
lastlot = NormalizeDouble(lastlot * Multiplier, 2);
ticket = OrderSend(Symbol(), OP_SELL, lastlot, NormalizeDouble(Bid, Digits), slip, NormalizeDouble(Ask+stoploss*Point, Digits), NormalizeDouble(Ask-takeprofit*Point, Digits), "Martingale-Sell", MagicNumber, 0, Red);
Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера
return (0);
}
//если раньше продавали, то теперь покупаем
if ( old_order_type == OP_SELL )
{
lastlot = FindLastLots(OP_SELL);
lastlot = NormalizeDouble(lastlot * Multiplier, 2);
ticket = OrderSend(Symbol(), OP_BUY, lastlot, NormalizeDouble(Ask, Digits), slip, NormalizeDouble(Bid-stoploss*Point, Digits), NormalizeDouble(Bid+takeprofit*Point, Digits), "Martingale-Buy", MagicNumber, 0, Green);
Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера
return (0);
}
}
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

я сделал-бы проще:
в цикле поиска открытого ордера, если есть: запоминал тикет, тип и лот (перед выходом).
затем если открытых ордеров нет: по тикету смотрел профит и в зависимости от этого рассчитывал лот и открывал новый ордер.

А не работает Ваш код из-за этого:
if ( OrderProfit() return (OrderType());
У Вас первый ордер закрылся в убыток и после этого срабатывает return и не даёт открываться.

По идее надо было так:
old_order_type = OrderType();
bool UseMartin = OrderProfit() double oLot = OrderLots();
далее перед открытием:
lastlot = UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2);

конечно можно написать и ещё лучше/оптимальней, но пойдёт и так.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Добавил, но все равно не работает.
Выходит ошибка OrderSend error 4051
invalid lots amount for OrderSend function

и не совсем понятно как читать UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2);
если true, то выполнять действие?

int start()

{
if (Hour()>=Hour_start && Hour() //инициализация параметров

{
int ticket = 0;
int old_order_type = OP_SELL;

//ищем среди всех открытых ордеров открытый советником ордер
RefreshRates();
for ( int trade = OrdersTotal() - 1; trade >= 0; trade-- )
{
//проверяем есть ли среди всех открытых ордеров именно тот ордер, который открыт данным советником.
if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
{
//если есть незакрытый ордер - выходим
return (0);
}
}
//нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер
for ( trade = OrdersHistoryTotal() - 1; trade >= 0; trade-- )
{
if ( OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
{
old_order_type = OrderType();
//последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
bool UseMartin = OrderProfit() double oLot = OrderLots();
}
}

//если раньше покупали, то теперь продаем
if ( old_order_type == OP_BUY )
{
lastlot = UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2);

ticket = OrderSend(Symbol(), OP_SELL, lastlot, NormalizeDouble(Bid, Digits), slip, NormalizeDouble(Ask+stoploss*Point, Digits), NormalizeDouble(Ask-takeprofit*Point, Digits), "Martingale-Sell", MagicNumber, 0, Red);
Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера
return (0);
}
//если раньше продавали, то теперь покупаем
if ( old_order_type == OP_SELL )
{
lastlot = UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2);

ticket = OrderSend(Symbol(), OP_BUY, lastlot, NormalizeDouble(Ask, Digits), slip, NormalizeDouble(Bid-stoploss*Point, Digits), NormalizeDouble(Bid+takeprofit*Point, Digits), "Martingale-Buy", MagicNumber, 0, Green);
Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера
return (0);
}
}
}

Март.mq4

Изменено пользователем Ruslan982
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Добавил, но все равно не работает.

Как обычно - "дьявол кроется в деталях", а именно: область видимости переменных, предварительная инициализация.


и не совсем понятно как читать UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2); если true, то выполнять действие?

Читай здесь

С кодом своим сам будешь биться или мне поправить?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте. Я уже писал,что пытаюсь разобраться с написанием сов по внешнему индикатору. Получилось,что сов ,когда гистограмма одного цвета-то открывает только sell. Когда цвет меняется- то только buy. Решил вместо гистограммы подставить любой стрелочный индикатор. Сов индикатор видит,только открывает сразу две сделки и buy и sell одновременно и чихать он хотел на сигналы инд. Подскажите пожалуйста что делать!

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...