тикет - это номер сделки, который присвоил ваш брокер, если этот номер -1, значит сделка не состоялась
понятно. В справочнике не всё указано и показано. Тем кто не знаком с языками программирования сложно будет самому это всё рассчитывать и составлять код, хоть там и написано что это легко.
Хочу написать советника который будет торговать в канале фибоначчи, случайно нашёл этот код. Код вставлял в компилятор MetaEditor компилируется на удивление без ошибок но этот код ничего не делает робот из него не получается возможно что все значения нулевые. Хочу спросить можно ли его использовать как основу для советника? Также хотел бы поинтересоваться какие пункты из этого кода можно выкинуть например 1. Приоритет на нажатие мышью для чего этот бред в коде или 2.Скрыт в списке объектов, 3.сбросим значение ошибки это обязательно в коде
? Кто может подробнее разъяснить написанный код?
#property strict//--- описание #property description"Скрипт строит графический объект \"Канал Фибоначчи\"."#property description"Координаты точек привязки задаются в процентах от"#property description"размеров окна графика."//--- покажем окно входных параметров при запуске скрипта #property script_show_inputs//--- входные параметры скрипта inputstring InpName="FiboChannel"; // Имя канала inputint InpDate1=20; // Дата 1-ой точки в % inputint InpPrice1=10; // Цена 1-ой точки в % inputint InpDate2=60; // Дата 2-ой точки в % inputint InpPrice2=30; // Цена 2-ой точки в % inputint InpDate3=20; // Дата 3-ей точки в % inputint InpPrice3=25; // Цена 3-ей точки в % inputcolor InpColor=clrRed; // Цвет канала inputENUM_LINE_STYLE InpStyle=STYLE_DASHDOTDOT; // Стиль линий канала inputint InpWidth=1; // Толщина линий канала inputbool InpBack=false; // Канал на заднем плане inputbool InpSelection=true; // Выделить для перемещений inputbool InpRay=false; // Продолжение канала на весь графикinputbool InpHidden=true; // Скрыт в списке объектов inputlong InpZOrder=0; // Приоритет на нажатие мышью //+------------------------------------------------------------------+ //| Cоздает "Канал Фибоначчи" по заданным координатам | //+------------------------------------------------------------------+ bool FiboChannelCreate(constlong chart_ID=0, // ID графика conststring name="FiboChannel", // имя канала constint sub_window=0, // номер подокна datetime time1=0, // время первой точкиdouble price1=0, // цена первой точкиdatetime time2=0, // время второй точкиdouble price2=0, // цена второй точкиdatetime time3=0, // время третьей точкиdouble price3=0, // цена третьей точкиconstcolor clr=clrRed, // цвет каналаconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль линий каналаconstint width=1, // толщина линий каналаconstbool back=false, // на заднем планеconstbool selection=true, // выделить для перемещенийconstbool ray=false, // продолжение канала на весь графикconstbool hidden=true, // скрыт в списке объектовconstlong z_order=0) // приоритет на нажатие мышью
{
//--- установим координаты точек привязки, если они не заданы
ChangeFiboChannelEmptyPoints(time1,price1,time2,price2,time3,price3);
//--- сбросим значение ошибки ResetLastError();
//--- создадим канал по заданным координатам if(!ObjectCreate(chart_ID,name,OBJ_FIBOCHANNEL,sub_window,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": не удалось создать \"Канал Фибоначчи\"! Код ошибки = ",GetLastError());
return(false); это условия обязательно
}
//--- установим цвет канала ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линий канала ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линий канала ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим выделения канала для перемещений//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection //--- по умолчанию равен true, что позволяет выделять и перемещать этот объект ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- включим (true) или отключим (false) режим продолжения отображения канала на весь графикObjectSetInteger(chart_ID,name,OBJPROP_RAY,ray);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение return(true); этот весь блок тоже нужен не нужен
}
//+------------------------------------------------------------------+ //| Задает количество уровней и их параметры | //+------------------------------------------------------------------+ bool FiboChannelLevelsSet(int levels, // количество линий уровняdouble &values[], // значения линий уровняcolor &colors[], // цвет линий уровняENUM_LINE_STYLE &styles[], // стиль линий уровняint &widths[], // толщина линий уровняconstlong chart_ID=0, // ID графика conststring name="FiboChannel") // имя объекта
{
//--- проверим размеры массивов if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||
levels!=ArraySize(widths) || levels!=ArraySize(widths))
{
Print(__FUNCTION__,": длина массива не соответствует количеству уровней, ошибка!");
return(false);
}
//--- установим количество уровней ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);
//--- установим свойства уровней в цикле for(int i=0;i<levels;i++)
{
//--- значение уровня ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);
//--- цвет уровня ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);
//--- стиль уровня ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);
//--- толщина уровня ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);
//--- описание уровня ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));
}
//--- успешное выполнение return(true);
}
//+------------------------------------------------------------------+ //| Перемещает точку привязки "Канала Фибоначчи" | //+------------------------------------------------------------------+ bool FiboChannelPointChange(constlong chart_ID=0, // ID графика conststring name="FiboChannel", // имя канала constint point_index=0, // номер точки привязкиdatetime time=0, // координата времени точки привязкиdouble price=0) // координата цены точки привязки
{
//--- если координаты точки не заданы, то перемещаем ее на текущий бар с ценой Bidif(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- сбросим значение ошибки ResetLastError();
//--- переместим точку привязки if(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": не удалось переместить точку привязки! Код ошибки = ",GetLastError()); или это условие
return(false);
}
//--- успешное выполнение return(true);
}
//+------------------------------------------------------------------+ //| Удаляет канал | //+------------------------------------------------------------------+ bool FiboChannelDelete(constlong chart_ID=0, // ID графика conststring name="FiboChannel") // имя канала
{
//--- сбросим значение ошибки ResetLastError();
//--- удалим канал if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": не удалось удалить \"Канал Фибоначчи\"! Код ошибки = ",GetLastError());
return(false);
}
//--- успешное выполнение return(true);
}
//+------------------------------------------------------------------+ //| Проверяет значения точек привязки "Канала Фибоначчи" и для | //| пустых значений устанавливает значения по умолчанию | //+------------------------------------------------------------------+ void ChangeFiboChannelEmptyPoints(datetime &time1,double &price1,datetime &time2,
double &price2,datetime &time3,double &price3)
{
//--- если время второй (правой) точки не задано, то она будет на текущем баре if(!time2)
time2=TimeCurrent();
//--- если цена второй точки не задана, то она будет иметь значение Bid if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- если время первой (левой) точки не задано, то она лежит на 9 баров левее второйif(!time1)
{
//--- массив для приема времени открытия 10 последних баров datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- установим первую точку на 9 баров левее второй
time1=temp[0];
}
//--- если цена первой точки не задана, то сдвинем ее на 300 пунктов выше второйif(!price1)
price1=price2+300*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
//--- если время третьей точки не задано, то оно совпадает с временем первой точкиif(!time3)
time3=time1;
//--- если цена третьей точки не задана, то она совпадает с ценой второй точки if(!price3)
price3=price2;
}
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart()
{
//--- проверим входные параметры на корректность if(InpDate1<0 || InpDate1>100 || InpPrice1<0 || InpPrice1>100 ||
InpDate2<0 || InpDate2>100 || InpPrice2<0 || InpPrice2>100 ||
InpDate3<0 || InpDate3>100 || InpPrice3<0 || InpPrice3>100)
{
Print("Ошибка! Некорректные значения входных параметров!");
return;
}
//--- количество видимых баров в окне графика int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- размер массива price int accuracy=1000;
//--- массивы для хранения значений дат и цен, которые будут использованы //--- для установки и изменения координат точек привязки канала datetime date[];
double price[];
//--- выделение памяти ArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- заполним массив дат ResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Не удалось скопировать значения времени! Код ошибки = ",GetLastError());
return;
}
//--- заполним массив цен //--- найдем максимальное и минимальное значение графика double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- определим шаг изменения цены и заполним массив double step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- определим точки для рисования канала int d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int d3=InpDate3*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
int p3=InpPrice3*(accuracy-1)/100;
//--- создадим "Канал Фибоначчи" if(!FiboChannelCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],date[d3],price[p3],
InpColor,InpStyle,InpWidth,InpBack,InpSelection,InpRay,InpHidden,InpZOrder))
{
return;
}
//--- перерисуем график и подождем 1 секунду ChartRedraw();
Sleep(1000);
//--- теперь будем перемещать точки привязки канала //--- счетчик цикла int h_steps=bars/10;
//--- перемещаем первую точку привязки for(int i=0;i<h_steps;i++)
{
//--- возьмем следующее значение if(d1>1)
d1-=1;
//--- сдвигаем точку if(!FiboChannelPointChange(0,InpName,0,date[d1],price[p1]))
return;
//--- проверим факт принудительного завершения скрипта if(IsStopped())
return;
//--- перерисуем график ChartRedraw();
// задержка в 0.05 секунды Sleep(50);
}
//--- задержка в 1 секунду Sleep(1000);
//--- счетчик цикла int v_steps=accuracy/10;
//--- перемещаем вторую точку привязки for(int i=0;i<v_steps;i++)
{
//--- возьмем следующее значение if(p2>1)
p2-=1;
//--- сдвигаем точку if(!FiboChannelPointChange(0,InpName,1,date[d2],price[p2]))
return;
//--- проверим факт принудительного завершения скрипта а эта запись нужна?if(IsStopped())
return;
//--- перерисуем график ChartRedraw();
}
//--- задержка в 1 секунду Sleep(1000);
//--- счетчик цикла
v_steps=accuracy/15;
//--- перемещаем третью точку привязки for(int i=0;i<v_steps;i++)
{
//--- возьмем следующее значение if(p3<accuracy-1)
p3+=1;
//--- сдвигаем точку if(!FiboChannelPointChange(0,InpName,2,date[d3],price[p3]))
return;
//--- проверим факт принудительного завершения скрипта if(IsStopped())
return;
//--- перерисуем график ChartRedraw();
}
//--- задержка в 1 секунду Sleep(1000);
//--- удалим канал с графика
FiboChannelDelete(0,InpName);
ChartRedraw();
//--- задержка в 1 секунду Sleep(1000);
//---
}
Хочу написать советника который будет торговать в канале фибоначчи, случайно нашёл этот код. Код вставлял в компилятор MetaEditor компилируется на удивление без ошибок но этот код ничего не делает робот из него не получается возможно что все значения нулевые. Хочу спросить можно ли его использовать как основу для советника? Также хотел бы поинтересоваться какие пункты из этого кода можно выкинуть например 1. Приоритет на нажатие мышью для чего этот бред в коде или 2.Скрыт в списке объектов, 3.сбросим значение ошибки это обязательно в коде
? Кто может подробнее разъяснить написанный код?
Если посмотрите на приведенный Вами текст якобы советника - то найдете там слова: Скрипт строит графический объект ... Это скрипт. Для торговли желателен советник, в котором, с другой стороны, должна использоваться функция OrderSend для посылки на сервер ордеров ( по-нашему приказов). Без знания основ программирования браться за программу - это что пытаться научить говорить безъязычное существо вроде инфузории или амебы, или дождевого червяка. Есть люди, занимающиеся тут программированием 5 ... 10 лет прежде чем что-то начало получаться.
Совет: скачайте с КодеБазы десятка два советников, погоняйте в тестере стратегий. Найдете отдаленно похожий на доходного (критерий: проигрыш всего в 2 раза превышает выигрыш) и погоняйте его на демо-счете. Потом уже смотрите его в редакторе.
Обратите внимание на одну странную вещь: если случайным образом делать покупки и продажи то выигрыш должен быть примерно равен проигрышу. Иногда то больше, иногда другое. Теперь попробуйте торговать руками на демо. Сначала будет пополам, но потом проигрыш будет расти и будет в 5 раз больше выигрыша. Вот когда поймете в чем секрет, потом можно думать о торговле на Форексе.
В этой теме я буду задавать вопросы по данному языку и по некоторым кодам.
https://book.mql4.com/ru/build/conditions
Функция вычисляет торговые критерии. Функция возвращает следующие значения:
10 - сработал торговый критерий для открытия рыночного ордера Buy; 20 - сработал торговый критерий для открытия рыночного ордера Sell; 11 - сработал торговый критерий для закрытия рыночного ордера Buy; 21 - сработал торговый критерий для закрытия рыночного ордера Sell;
почему так зациклена программа на возвращаемых значениях для чего так сделано?
Такой вариант автора - программа не зациклена абсолютно. Это общий вариант по мнению Автора:
https://book.mql4.com/ru/build/trading - внимание обратите на зачения по выбору торговой ф-ии и все станет понятно. Числа могут быть любыми - это лишь вариант Сергея Ковалева. Благодарность ему выражаю от всей души - по его учебнику учился...
int Trade(int Trad_Oper) // Пользовательская функция
{
// Trad_Oper - тип торговой операции:// 10 - открытие Buy // 20 - открытие Sell // 11 - закрытие Buy// 21 - закрытие Sell// 0 - значимых критериев нет// -1 - используется другой финансовый инструментswitch(Trad_Oper)
{
//--------------------------------------------------------- 2 --case10: // Торговый критерий = Buy
Close_All(1); // Закрыть все Sellif (Lot()==false) // Средств не хватает на миним.return; // Выход из пользов. функции
Open_Ord(0); // Открыть Buyreturn; // Поторговали - уходим
Как правило, обычный эксперт содержит несколько торговых функций. Их можно разделить на две категории - управляющие и исполнительные. В большинстве случаев в эксперте используется всего одна управляющая функция и несколько исполнительных. Торговая стратегия в обычном эксперте реализуется на основе двух функций - функции определения торговых...
Если посмотрите на приведенный Вами текст якобы советника - то найдете там слова: Скрипт строит графический объект ... Это скрипт. Для торговли желателен советник, в котором, с другой стороны, должна использоваться функция OrderSend для посылки на сервер ордеров ( по-нашему приказов). Без знания основ программирования браться за программу - это что пытаться научить говорить безъязычное существо вроде инфузории или амебы, или дождевого червяка. Есть люди, занимающиеся тут программированием 5 ... 10 лет прежде чем что-то начало получаться.
Совет: скачайте с КодеБазы десятка два советников, погоняйте в тестере стратегий. Найдете отдаленно похожий на доходного (критерий: проигрыш всего в 2 раза превышает выигрыш) и погоняйте его на демо-счете. Потом уже смотрите его в редакторе.
Обратите внимание на одну странную вещь: если случайным образом делать покупки и продажи то выигрыш должен быть примерно равен проигрышу. Иногда то больше, иногда другое. Теперь попробуйте торговать руками на демо. Сначала будет пополам, но потом проигрыш будет расти и будет в 5 раз больше выигрыша. Вот когда поймете в чем секрет, потом можно думать о торговле на Форексе.
Ну есть такое что на тестере вроде золото даже если рассматривать самые плохие варианте а торгуя руками тяжело давит психика ломается сущность но торгуя на демо отношение может быть другое чем торгуя на настоящие средства поэтому я торгую микролотом на живые средства так можно проанализировать и себя и рынок учесть эти ошибки в будущем и исправить результат. Что касается скрипта его можно привязать к советнику это называется сложная программа т. к. ей нужно дать понять что ведётся торговля по расчётам канала.
Привет, из солнечного Мурманска. Пришел за помощью. Как бы мне сигналить на экран с интервалом кратным 60 минут от закрытия ордера. информацию сигналить такую, лот, время закрытия ордера и цену закрытия. Те ордеры что закрыты не боле 10 часов.
Привет, из солнечного Мурманска. Пришел за помощью. Как бы мне сигналить на экран с интервалом кратным 60 минут от закрытия ордера. информацию сигналить такую, лот, время закрытия ордера и цену закрытия. Те ордеры что закрыты не боле 10 часов.
Решение = советник. Другие названия: робот, помощник, эксперт, АТС = автоматическая торговая система, МТС = механическая торговая система, жаргонное словечко сова. При запуске советника на экране появляются 2 кнопки. 1. Выход - прекращает работу советника. 2. Разрешение/Запрет работы советника. Советник работает так: По таймеру с интервалом 1 минуту, если разрешено, производится анализ истории торговли. Если есть ордер, от закрытия которого прошло 60 минут но менее 10 часов, то выводится лот, время и цена закрытия этого ордера. Этапы проектирования:
Вариант 0. При нажатии Кнопка 1 меняет цвет. При нажатии Кнопки 2 - выход. Цель - проверка работы кнопок
Вариант 1. Советник каждую минуту выводит на экран текущее время. Назначение - контроль отсчета 1 минуты
Вариант 2. Советник каждую минуту выводит на экран количество ордеров в истории. Назначение - контроль доступа к истории. Убеждаемся, что количество ордеров в истории зависит от установленного в истории периода: Сегодня, Последние 3 дня, Последняя неделя, ...
Вариант 3. Советник каждую минуту выводит на экран время закрытия последних трех ордеров. Назначение - контроль цикла
Вариант 4. Советник каждую минуту проверяет историю и при совпадении условий выводит информацию об ордерах
это не ценовая динамика, а ордерная)
тикет - это номер сделки, который присвоил ваш брокер, если этот номер -1, значит сделка не состоялась
это не ценовая динамика, а ордерная)
тикет - это номер сделки, который присвоил ваш брокер, если этот номер -1, значит сделка не состоялась
понятно. В справочнике не всё указано и показано. Тем кто не знаком с языками программирования сложно будет самому это всё рассчитывать и составлять код, хоть там и написано что это легко.
Хочу написать советника который будет торговать в канале фибоначчи, случайно нашёл этот код. Код вставлял в компилятор MetaEditor компилируется на удивление без ошибок но этот код ничего не делает робот из него не получается возможно что все значения нулевые. Хочу спросить можно ли его использовать как основу для советника? Также хотел бы поинтересоваться какие пункты из этого кода можно выкинуть например 1. Приоритет на нажатие мышью для чего этот бред в коде или 2.Скрыт в списке объектов, 3.сбросим значение ошибки это обязательно в коде
? Кто может подробнее разъяснить написанный код?
Хочу написать советника который будет торговать в канале фибоначчи, случайно нашёл этот код. Код вставлял в компилятор MetaEditor компилируется на удивление без ошибок но этот код ничего не делает робот из него не получается возможно что все значения нулевые. Хочу спросить можно ли его использовать как основу для советника? Также хотел бы поинтересоваться какие пункты из этого кода можно выкинуть например 1. Приоритет на нажатие мышью для чего этот бред в коде или 2.Скрыт в списке объектов, 3.сбросим значение ошибки это обязательно в коде
? Кто может подробнее разъяснить написанный код?
Если посмотрите на приведенный Вами текст якобы советника - то найдете там слова: Скрипт строит графический объект ... Это скрипт. Для торговли желателен советник, в котором, с другой стороны, должна использоваться функция OrderSend для посылки на сервер ордеров ( по-нашему приказов). Без знания основ программирования браться за программу - это что пытаться научить говорить безъязычное существо вроде инфузории или амебы, или дождевого червяка. Есть люди, занимающиеся тут программированием 5 ... 10 лет прежде чем что-то начало получаться.
Совет: скачайте с КодеБазы десятка два советников, погоняйте в тестере стратегий. Найдете отдаленно похожий на доходного (критерий: проигрыш всего в 2 раза превышает выигрыш) и погоняйте его на демо-счете. Потом уже смотрите его в редакторе.
Обратите внимание на одну странную вещь: если случайным образом делать покупки и продажи то выигрыш должен быть примерно равен проигрышу. Иногда то больше, иногда другое. Теперь попробуйте торговать руками на демо. Сначала будет пополам, но потом проигрыш будет расти и будет в 5 раз больше выигрыша. Вот когда поймете в чем секрет, потом можно думать о торговле на Форексе.
В этой теме я буду задавать вопросы по данному языку и по некоторым кодам.
https://book.mql4.com/ru/build/conditions
Функция вычисляет торговые критерии. Функция возвращает следующие значения:
10 - сработал торговый критерий для открытия рыночного ордера Buy;
20 - сработал торговый критерий для открытия рыночного ордера Sell;
11 - сработал торговый критерий для закрытия рыночного ордера Buy;
21 - сработал торговый критерий для закрытия рыночного ордера Sell;
почему так зациклена программа на возвращаемых значениях для чего так сделано?
Такой вариант автора - программа не зациклена абсолютно. Это общий вариант по мнению Автора:
https://book.mql4.com/ru/build/trading - внимание обратите на зачения по выбору торговой ф-ии и все станет понятно. Числа могут быть любыми - это лишь вариант Сергея Ковалева. Благодарность ему выражаю от всей души - по его учебнику учился...
...
Если посмотрите на приведенный Вами текст якобы советника - то найдете там слова: Скрипт строит графический объект ... Это скрипт. Для торговли желателен советник, в котором, с другой стороны, должна использоваться функция OrderSend для посылки на сервер ордеров ( по-нашему приказов). Без знания основ программирования браться за программу - это что пытаться научить говорить безъязычное существо вроде инфузории или амебы, или дождевого червяка. Есть люди, занимающиеся тут программированием 5 ... 10 лет прежде чем что-то начало получаться.
Совет: скачайте с КодеБазы десятка два советников, погоняйте в тестере стратегий. Найдете отдаленно похожий на доходного (критерий: проигрыш всего в 2 раза превышает выигрыш) и погоняйте его на демо-счете. Потом уже смотрите его в редакторе.
Обратите внимание на одну странную вещь: если случайным образом делать покупки и продажи то выигрыш должен быть примерно равен проигрышу. Иногда то больше, иногда другое. Теперь попробуйте торговать руками на демо. Сначала будет пополам, но потом проигрыш будет расти и будет в 5 раз больше выигрыша. Вот когда поймете в чем секрет, потом можно думать о торговле на Форексе.
Ну есть такое что на тестере вроде золото даже если рассматривать самые плохие варианте а торгуя руками тяжело давит психика ломается сущность но торгуя на демо отношение может быть другое чем торгуя на настоящие средства поэтому я торгую микролотом на живые средства так можно проанализировать и себя и рынок учесть эти ошибки в будущем и исправить результат. Что касается скрипта его можно привязать к советнику это называется сложная программа т. к. ей нужно дать понять что ведётся торговля по расчётам канала.
Как указать в коде советника что должно быть открыто 3 ордера?
Имейте в виду что функция ( OrdersTotal() ) видит все ордера, любые магики, другие символы,отложенные и рыночные
Привет, из солнечного Мурманска. Пришел за помощью. Как бы мне сигналить на экран с интервалом кратным 60 минут от закрытия ордера. информацию сигналить такую, лот, время закрытия ордера и цену закрытия. Те ордеры что закрыты не боле 10 часов.
Привет, из солнечного Мурманска. Пришел за помощью. Как бы мне сигналить на экран с интервалом кратным 60 минут от закрытия ордера. информацию сигналить такую, лот, время закрытия ордера и цену закрытия. Те ордеры что закрыты не боле 10 часов.
Решение = советник. Другие названия: робот, помощник, эксперт, АТС = автоматическая торговая система, МТС = механическая торговая система, жаргонное словечко сова. При запуске советника на экране появляются 2 кнопки. 1. Выход - прекращает работу советника. 2. Разрешение/Запрет работы советника. Советник работает так: По таймеру с интервалом 1 минуту, если разрешено, производится анализ истории торговли. Если есть ордер, от закрытия которого прошло 60 минут но менее 10 часов, то выводится лот, время и цена закрытия этого ордера. Этапы проектирования:
Вариант 0. При нажатии Кнопка 1 меняет цвет. При нажатии Кнопки 2 - выход. Цель - проверка работы кнопок
Вариант 1. Советник каждую минуту выводит на экран текущее время. Назначение - контроль отсчета 1 минуты
Вариант 2. Советник каждую минуту выводит на экран количество ордеров в истории. Назначение - контроль доступа к истории. Убеждаемся, что количество ордеров в истории зависит от установленного в истории периода: Сегодня, Последние 3 дня, Последняя неделя, ...
Вариант 3. Советник каждую минуту выводит на экран время закрытия последних трех ордеров. Назначение - контроль цикла
Вариант 4. Советник каждую минуту проверяет историю и при совпадении условий выводит информацию об ордерах