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

Доработка советников: общая тема


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

Доработка советников: общая тема Опубликовано
Sacred70 я бы сделал так:
У Вас советник имеет 2 состояния: 1. ожидание сигнала на вход и 2. торговля (макс. 15 минут)
будут нужны переменные:
int state = -1; // состояние: -1 - ожидание входа, 0 - торговля Бай, 1 - торговля Селл
datetame dtCheck = 0; // время принятия решения
int count = 0; //счётчик входов внутри серии

функция OnTick будет выглядеть так:
{
if ( state {
state = IsSignal(); // функция возвращает направление торговли или -1
if ( state // сигнал получен!!!
if (_Open( state, lot1 )) count++; // открываем первый ордер, вычисляем время проверки, сохраняем тикет

}
else // проверка результатов торгов
{
if ( TimeCurrent() // закрываем сделку и проверяем результат
_Close(); // закрываем и сохраняем результат ордера
if ( PL > 0 ) reset(); // прибыль - сбрасываем счётчики и состояние серии
else
{
if ( _Open( state, lot1*(count+1) )) count++; // открываем первый ордер, вычисляем время проверки, сохраняем тикет
}
}
}

Осталось Ваш код перенести в функции IsSignal, _Open, _Close - справитесь?
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

Нате 1_2_3 _Fraktal.mq4

Перейти

Система маятника, или попрыгунчика, или фиг ее знает как ее еще назвать не намного младше сетки мартингейла. Мы в далеком 2017 писали по ней сов с индикатором на вход: https://tlap.com/forum/labo

Перейти
Доработка советников: общая тема Опубликовано
0ll спасибо. Сегодня ночью постараюсь написать. Есть только пару вопросов по новым функциям: они же должны быть создано до OnTick? И как создать эти функции(мне бы пример первой строки, у меня с этим еще тяжко)?
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 не обязательно до ОнТик, можно после - на любом пустом месте, разберём написание функции с аргументами и возвратом значения:

bool _Open( int Type, double Lots ) // объявление функции с аргументами и типом возвращаемого значения (bool)
{
double lastTicket = -1;
if ( Type == OP_BUY ) lastTicket = OrderSend( NULL, OP_BUY, Lots, Ask, 10, 0, 0, 0, 0, 0, clrBlue );
else if ( Type == OP_SELL ) lastTicket = OrderSend( NULL, OP_SELL, Lots, Bid, 10, 0, 0, 0, 0, 0, clrRed );

if ( lastTicket >= 0 && OrderSelect( lastTicket, SELECT_BY_TICKET ) ) // ордер открыт - сохраняем параметры
{
dtCheck = OrderOpenTime() + 5*60; // вычисляем время закрытия и проверки результата
TKlast = lastTicket;
return(true);
}

return(false);
} Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
0ll А в функцию reset() что написать? и PL можно заменить на OrderProfit()?
if ( PL > 0 ) reset(); // прибыль - сбрасываем счётчики и состояние серии
else
{ Изменено пользователем Sacred70
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

0ll А в функцию reset() что написать? и PL можно заменить на OrderProfit()?

В reset нужно обнулить все глобальные переменные: dtCheck = 0, TKlast = count = 0, state = -1.
Вместо ПЛ можно использовать OrderProfit(), но нужно быть внимательнее с OrderSelect, иначе можно получить не очевидную ошибку...
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
0ll прошу помощи с этими функциями, ломал голову все выходные, но так и не понял откуда берутся аргументы и саму конструкцию функции :(
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 ничего, понимание придёт. Давай какие-нибудь варианты функций - будем дорабатывать. С reset получилось?
void reset() { dtCheck = 0; TKlast = count = 0; state = -1; }
В _Close , кроме самого закрытия, нужно выяснить ПЛ ордера и всё.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
0ll

Спойлер

bool _Open( int Type, double Lots ) // объявление функции с аргументами и типом возвращаемого значения (bool)
{
double lastTicket = -1;
if ( Type == OP_BUY ) lastTicket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, NULL ,NULL ,NULL, 0, 0, Green);
else if ( Type == OP_SELL ) lastTicket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, NULL ,NULL ,NULL, 0, 0, Red);

if ( lastTicket >= 0 && OrderSelect( lastTicket, SELECT_BY_TICKET ) ) // ордер открыт - сохраняем параметры
{
dtCheck = OrderOpenTime() + 5*60; // вычисляем время закрытия и проверки результата
TKlast = lastTicket;
return(true);
}

return(false);
}

//---------------------------------------------------------------------------------------------------------------------

bool IsSignal()
{
if (OrdersTotal()Open[3]&&Close[2]>Open[2]&&Open[1]>Close[1]&&Open[1]>UBB&&TKSELL int state = 1;

else
if (OrdersTotal()Close[3]&&Open[2]>Close[2]&&Close[1]>Open[1]&&Open[1] int state = 0;
}

написал знаю что криво, но это то до чего додумался

//---------------------------------------------------------------------------------------------------------------------

bool _Close()
{
if (OrdersTotal>0&&dtCheck==300&&OrderSelect(TKBUY, SELECT_BY_TICKET)==true)
{CLBUY = OrderClose(TKBUY, LT,Bid,10);}

else
if (OrdersTotal>0&&dtCheck==300&&OrderSelect(TKSELL, SELECT_BY_TICKET)==true)
{CLSELL = OrderClose(TKSELL, LT,Ask,10);}
}

void reset()
{
dtCheck = 0;
TKlast = count = 0;
state = -1;

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

Доработка советников: общая тема Опубликовано
Sacred70
1. В bool IsSignal() вместо bool IsSignal() пишем int IsSignal() , вместо int state = 1; пишем return(OP_SELL);
2. void _Close()
{
if ( OrderSelect( TKlast, SELECT_BY_TICKET )
&& OrderClose( TKlast, OrderLots(), OrderClosePrice(), 10 ) ) PL = OrderProfit(); // ордер закрыт, сохраняем профит
}
Это всё - огонь!
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

0ll Спасибо. Получилось вот так. единственное в int IsSignal() при компиляции терминал ругается на закрывающую }, а вот в чем проблема не пойму.

Спойлер

extern int TimeFrame = 0;
extern int TP = 0;
extern int SL = 0;
extern double LT = 0.1;
extern int Magic = 12;
int TKSELL = -1;
int TKBUY = -1;
int lastType = -1;
bool CLBUY = true;
bool CLSELL = true;
extern int Len = 7;
extern double Filter = 0.0;
int TIME =900;
int state = -1; // состояние: -1 - ожидание входа, 0 - торговля Бай, 1 - торговля Селл
datetime dtCheck = 0; // время принятия решения
int count = 0; //счётчик входов внутри серии
double TKlast;
double PL;
//int Hour();
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{}
//---


//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//условие открытия торговли(время открытия и закрытия европейской сессии)
if (state=11&&Hour(){
state = IsSignal(); // функция возвращает направление торговли или -1
if ( state // сигнал получен!!!
if (_Open( state, LT )) count++; // открываем первый ордер, вычисляем время проверки, сохраняем тикет

}
else // проверка результатов торгов
{
if ( TimeCurrent() // закрываем сделку и проверяем результат
_Close(); // закрываем и сохраняем результат ордера
if ( OrderProfit() > 0 ) reset(); // прибыль - сбрасываем счётчики и состояние серии
else
{
if ( _Open( state, LT*(count+1) )) count++; // открываем первый ордер, вычисляем время проверки, сохраняем тикет
}}}
//-------------------------------------------------------------------------------------------------
bool _Open( int Type, double Lots ) // объявление функции с аргументами и типом возвращаемого значения (bool)
{
double lastTicket = -1;
if ( Type == OP_BUY ) lastTicket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, NULL ,NULL ,NULL, 0, 0, Green);
else if ( Type == OP_SELL ) lastTicket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, NULL ,NULL ,NULL, 0, 0, Red);

if ( lastTicket >= 0 && OrderSelect (lastTicket, SELECT_BY_TICKET ) ) // ордер открыт - сохраняем параметры
{
dtCheck = OrderOpenTime() + 5*60; // вычисляем время закрытия и проверки результата
TKlast = lastTicket;
return(true);
}
return(false);
}
//---------------------------------------------------------------------------------------------------------------------

int IsSignal()
{
double UBB = iBands (NULL, 0, 15, 2, 2, PRICE_CLOSE, MODE_UPPER, 0);
double DBB = iBands (NULL, 0, 15, 2, 2, PRICE_CLOSE, MODE_LOWER, 0);
if (OrdersTotal()Open[3]&&Close[2]>Open[2]&&Open[1]>Close[1]&&Open[1]>UBB&&TKSELL return(OP_SELL);

else
if (OrdersTotal()Close[3]&&Open[2]>Close[2]&&Close[1]>Open[1]&&Open[1] return(OP_BUY);
}
//---------------------------------------------------------------------------------------------------------------------

void _Close()
{
if ( OrderSelect(TKlast, SELECT_BY_TICKET )
&& OrderClose( TKlast, OrderLots(), OrderClosePrice(), 10 ) ) PL = OrderProfit();
}
//---------------------------------------------------------------------------------------------------------------------
void reset()
{
dtCheck = 0;
TKlast = count = 0;
state = -1;
}

Снимок.JPG

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

Доработка советников: общая тема Опубликовано

а вот в чем проблема не пойму.


Он ругается на ситуацию, если ни один из if не сработает, то функции нечего возвращать.
Допишите еще return(XXX);
Вместо XXX- что нужно вернуть по логике, если нет сигнала, возможно -1.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

все заработало как надо

Не верю... Там есть ошибки, например использование TKBUY и TKSELL - у Вас теперь только TKlast остался.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Пожалуйста,помогите по работе с текстовыми файлами. На тесте файл создается, но туда ничего не записывается. Что не так сделал или на тесте это не работает?

Спойлер


int file_signal=FileOpen("signal.txt",FILE_TXT|FILE_READ|FILE_WRITE|FILE_SHARE_READ,';');
if (state=11&&Hour(){
state = IsSignal();
if ( state
if (_Open( state))
{FileWrite(file_signal,Symbol()+ _sig + _time );
count++;}

}
else
{
if ( TimeCurrent()
_Close();
if (count {FileWrite(file_signal,Symbol()+ count+_sig + _time );

FileClose(file_signal);}
if (count==4)
{FileWrite(file_signal,Symbol());
FileClose(file_signal);
reset(); }


if ( PlyusBuy==true||PlyusSell==true)
{FileWrite(file_signal,Symbol());
FileClose(file_signal);
reset(); }

else
{
if ( _Open( state)) count++;
}}}

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

Доработка советников: общая тема Опубликовано

Пожалуйста,помогите по работе с текстовыми файлами


//+------------------------------------------------------------------+
void WriteCSVFile(double equity) {

int file_handle = FileOpen(csvFileName,FILE_READ|FILE_WRITE|FILE_TXT); //check if file exist
if(file_handle != INVALID_HANDLE) {

if(FileSeek(file_handle,0,SEEK_END) == true) { //переходим в конец файла, чтобы не заменять уже существующие строки
FileWrite(file_handle,equity);
}

FileClose(file_handle);

}
else Print("Error in FileOpen. Error Code = ",GetLastError());

}


Вот самая простая формула, у меня работает.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Sacred70 Создал специально скрипт (Вам тоже советую через скрипты пробовать).
Вы на каждом тике открываете и закрываете файл? - попробуйте открыть в Ините, а закрывать в ДеИните, а в процессе работы совы - только писать.
Если не собираетесь совой читать файл - зачем флаг чтения?

File_Write.PNG

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

Доработка советников: общая тема Опубликовано
0ll Спасибо, но внедрять скрипт в советника это пока не для моего уровня знаний. А вот открывать и закрывать через OnInit и OnDeinit это интересно, на сколько я понял, из небольшого описания, в соответствующую функцию нужно поместить строку с открытием файла и закрытием. Верно?

Вроде все получилось, распихал открытие и закрытие по OnInit и OnDeinit, а само написание засунул в функцию вместе с перемещением в конец файла предварительно задав текст, но почему то из 4 вариантов текста пишет только второй, но это возможно из-за того что на одну из функций компилятор пишет expression has no effect, там я только присваиваю переменной значение текущей цены (Bid). Как это поправить?
void _TheEnd()
{
bid2==Bid;
} Изменено пользователем Sacred70
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

bid2==Bid;

Это не присваивание, а сравнение 8-} заработался?
ПС: скрипт не надо внедрять, просто посмотреть работающий вызов функций.
Если закрывать файл только в деините, то перемещение в конец не нужно, по идее указатель остаётся в конце автоматически, а вот если открывать существующий файл, то перед записью надо перемещать указатель в конец.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Добрый день. Вновь взываю к Вам о помощи в воплощении моих грязных фантазий))). x_x
В этот раз хочу вместо открытия ордеров, прописать все действия в файл. Так сказать торговля на бумаге. Смысл таков:
Открывается ордер на определенное время и направлении. При этом это только прописывается в файл. Для проверки результатов во время совпадения с условиями открытия ордера фиксируется текущая цена, затем фиксируется цена через заданное время и сравнивается по определенному алгоритму в зависимости от направления сигнала. В случае убытка все должно повторяться пока не получим прибыль или серия не достигнет 3 колен мартина. В данный момент уже плавится мозг, но советник не работает должным образом. Всего 4 варианта сообщений, первый: это оповещение о совпадении с условием, указывается направление сделки, пара, время. Второе: это оповещение о убыточной сделки. Третье: оповещение об убыточной серии. Четвертое: Оповещение о прибыли в серии. В нынешнем состоянии 99% сообщений это номер четыре, без первого. Пожалуйста, помогите разобраться. Подозреваю что косяк в OnTick(), но уже не соображу где.



Спойлер


int lastType = -1;
int state = -1; // состояние: -1 - ожидание входа, 0 - торговля Бай, 1 - торговля Селл
datetime dtCheck = 0; // время принятия решения
int count = 0; //счётчик входов внутри серии
double TKlast;
double bid1B = -1; //цена открытия BUY
double bid2 = 0; //цена закрытия
double bid1S = -1; //цена открытия SELL
string naprawlenie;// направление ордера


extern int _time = 5; //время экспирации

int file_signal;


//int Hour();
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
file_signal=FileOpen("signal.txt",FILE_TXT|FILE_WRITE|FILE_SHARE_READ);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{FileClose(file_signal);}
//---


//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bool PlyusBuy = bid1Bbool MinusBuy = bid1B>bid2; //сделка BUY убыточная
bool PlyusSell = bid1S>bid2;//сделка SELL прибыльная
bool MinusSell = bid1Sstring text1 = naprawlenie + " на " + _time +" минут ";
string text2 = " - .Ступень номер "+count+". Берем мартина " +naprawlenie + " на " + _time +" минут";
string text3 = " Серия закрылась в -.";
string text4 = " Серия закрылась в +.";



//условие открытия торговли(время открытия и закрытия европейской сессии)
if (state=11&&Hour(){
state = IsSignal(); // функция возвращает направление торговли или -1
if ( state // сигнал получен
if (_Open( state)&&count==0)
{
Write(text1);
count++;
} // фиксируем первый ордер и записываем его данные, прокручивая счетчик

}
else // проверка результатов торгов
{
if ( TimeCurrent() 0 ) return; // время не прошло - выход

else
{ _Close(); // фиксируем цену по остечению времени экспирации

if (count>0&&count {
Write(text2);

reset(); }

if (count==3) //фиксация третьей убытосной ступени мартина, оповещение и обнуление
{
Write(text3);

reset(); } }


if (count {
Write(text4);

reset(); }

else
{
if ( _Open( state)&&count }}}
//-------------------------------------------------------------------------------------------------
bool _Open( int Type) // фиксация цены на сигнале и определение направления и времени от сигнала до экспирации
{
double lastTicket = -1;
if ( Type == 0 ) //направление вверх + сохранение цены на сигнале
{naprawlenie = "Вверх";
lastTicket =bid1B=Bid;}

else
if ( Type == 1 ) // направление вниз + сохранение цены на сигнале
{naprawlenie = "Вниз";
lastTicket =bid1S=Bid;}

if ( lastTicket > 0) // сигнал в определенном направлении зафиксирован
{


dtCheck = TimeCurrent() + _time*60; // вычисляем время закрытия и проверки результата
TKlast = lastTicket;
return(true);
}
return(false);
}
//---------------------------------------------------------------------------------------------------------------------

int IsSignal()//поиск сигнала
{

double highH1 = iHigh(Symbol(), PERIOD_H1, 0);
datetime time_H1 = iTime(Symbol(), PERIOD_H1, 0);
double lowM5 = iLow(Symbol(), PERIOD_M5, 0);
double lowH1 = iLow(Symbol(), PERIOD_H1, 0);

double openM5_1 = iOpen(Symbol(), PERIOD_M5, 1);
double openM5_2 = iOpen(Symbol(), PERIOD_M5, 2);

double openM15 = iOpen(Symbol(), PERIOD_M15, 0);
double openH1 = iOpen(Symbol(), PERIOD_H1, 0);
double closeM5_1 = iClose(Symbol(), PERIOD_M5, 1);
double closeM5_2 = iClose(Symbol(), PERIOD_M5, 2);

double closeH1 = iClose(Symbol(), PERIOD_H1, 0);
double UBB = iBands (NULL, 0, 21, 2, 2, PRICE_CLOSE, MODE_UPPER, 0);
double DBB = iBands (NULL, 0, 21, 2, 2, PRICE_CLOSE, MODE_LOWER, 0);
if (Close[3]>Open[3]&&Close[2]>Open[2]&&Open[1]>Close[1]&&Close[1] return(OP_SELL);

else
if (Open[3]>Close[3]&&Open[2]>Close[2]&&Close[1]>Open[1]&&Close[1]>DBB&&Bid>openM15&&Bid return(OP_BUY);
return (state = -1); //нет совпадений
}
//---------------------------------------------------------------------------------------------------------------------

void _Close() //цена по прошествии времени экспирации "_time"
{
bid2=Bid;
}
//---------------------------------------------------------------------------------------------------------------------
void reset() //обнуление
{
dtCheck = 0;
TKlast = 0;
count = 0;
state = -1;
bid1B = -1;
bid2 = 0;
bid1S = -1;
lastType = -1;
}
void Write(string text) // запись в файл
{

FileWrite(file_signal,Symbol() + text);

}

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

Доработка советников: общая тема Опубликовано
Sacred70
У Вас есть логические нестыковки:
Спойлер

1. if (state=11&&Hour() время нужно проверять в IsSignal, что более логично
2. if (_Open( state)&&count==0) // зачем проверяете count - У Вас только-что сигнал образовался? это называется костыль от ошибки, которую лень искать.
3. if ( TimeCurrent() 0 ) // см. п 2.
4. if (count>0&&count5. if ( _Open( state)&&count6. Вы определитесь со счётчиком: если 3 ордера, то count7. return (state = -1); // странно, что компилятор не ругается..., надо писать: return (-1);
8. if ( lastTicket > 0) // Это не то что Вы думаете (сигнал зафиксирован) - сигнал 0 (Бай) здесь не учитывается, надо >= 0 делать
для Вашего случая функцию Open можно оформить так:
bool _Open( int Type) { dtCheck = TimeCurrent() + _time*60; TKlast = Bid; naprawlenie = Type == 0 ? "Вверх" : "Вниз"; }

9. Вместо:
bool PlyusBuy = bid1Bbool MinusBuy = bid1B>bid2; //сделка BUY убыточная
bool PlyusSell = bid1S>bid2;//сделка SELL прибыльная
bool MinusSell = bid1Sсделайте
bool Result;
функцию _Close перепишите:
bool _Close() { return( State == 0 ? TKlast Bid ); }



короче переписал ОнТик:
Спойлер

bool Result = false;
void OnTick()
{
if ( state {
state = IsSignal();
if ( state
if (_Open( state) ) // сигнал получен
{ Write( (Type == 0 ? "Вверх" : "Вниз") + " на " + _time +" минут " ); count++; }
}
else
{
if ( TimeCurrent() //_Close(); - можно убрать
Result = State == 0 ? TKlast Bid;
if ( Result ) // сделка (№ не важен) закрылась в (+)
{ Write(" Серия закрылась в +."); reset(); }
else if ( count == 3 ) // сделаны 3 усреднения - закрываем серию
{ Write(" Серия закрылась в -."); reset(); }
else // убыток - усредняемся
{ if (_Open( state) ) count++;
Write(" - .Ступень номер "+count+". Берем мартина " +(Type == 0 ? "Вверх" : "Вниз")+ " на " + _time +" минут");
}
}
}
как-то так...
bool _Open( int Type) { dtCheck = TimeCurrent() + _time*60; TKlast = Bid; }
void reset() { dtCheck = 0; TKlast = 0; count = 0; state = -1; }

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

Доработка советников: общая тема Опубликовано
0ll
Спасибо огромное. Вроде все работает.Немного только не допер про bool Result(), как это работает
Изменено пользователем Sacred70
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Result это не функция - это просто булева переменная
Result = State == 0 ? TKlast Bid;
// перевод: результат = если сделка Бай ? цена открытия цена закрытия
т.е. Result = true если сделка закрылась в (+) и = false если сделка закрылась в (-)
Читай в справке - оператор "?"

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

Доработка советников: общая тема Опубликовано
0ll
а я сделал вот так и у меня работает, но не пойму почему))).
и могли бы объяснить эту строку Type == 0 ? "Вверх" : "Вниз"
Спойлер


bool Result()
{
bool PlyusBuy = (bid1B bool MinusBuy = (bid1B>bid2); //сделка BUY убыточная
bool PlyusSell = (bid1S>bid2);//сделка SELL прибыльная
bool MinusSell = (bid1Sreturn (true);

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

Доработка советников: общая тема Опубликовано
Sacred70 Ваша функция Result() не работает, ибо всегда возвращает true
читайте справку по оператору "?"
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • idinesh changed the title to Assae Elite Pro tlap version source code need i have plan convert this mt4 to mt5 and it possible mt4 dll file modified mt5 version
  • Pavel888 pinned this тема

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

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

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

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

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

Войти

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

Войти

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


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