Здравствуйте всем ! Я только пытаюсь в программирование советников, и хочу для начала написать статистический сборщик спредов. Ну то есть, что бы я хотел, чтобы он делал? В тестере запускается советник и собирает данные по истории тиков за определённое время, например за десять дней. Дальше выдаёт следующие данные в сsv или xlsx файл : Средний спред за промежуток времени: 00:00 - 09:00 по серверу, 09:00 - 18:00 , 18:00 - 00:00 (за все 10 дней), максимальный спред за это время, минимальный спред и усреднённый спред по валютной паре за весь период в десять дней. Мне очень надоело это собирать руками.
Я знаю, что есть программы, которые вроде как это сами делают... Но хочу своё, в качестве тренировки. Может быть уважаемые знатоки подскажут, с чего мне начать? И возможно ли вообще такое написать?
Заранее спасибо всем ответившим и отнесшимся с пониманием к новичку.
Всем привет. Может у кого-то есть готовый кусок кода. Есть 2 параметра, депозит=3000 и лот 0.01 то есть при депозите 3000 лот будет 0.01, теперь строго при удвоении то есть когда депо будет 6000 лот будет 0.02 при 9000 будет 0.03 как это сделать?
Всем привет. Может у кого-то есть готовый кусок кода. Есть 2 параметра, депозит=3000 и лот 0.01 то есть при депозите 3000 лот будет 0.01, теперь строго при удвоении то есть когда депо будет 6000 лот будет 0.02 при 9000 будет 0.03 как это сделать?
Помогите пожалуйста найти ошибку... В скрипте копирую значения баров(BarsCount) с индикаторного буфера, потом обхожу значения в цикле, определяю сигнал и записываю для распечатки в Print(); Вроде все просто, да не тут то было... Получаю все сигналы как и хотел за исключением пересечения нулевой линии
CROSSOVER_OR_REVERSE
индикатора. Может в скрипте так нельзя? Код и скрин лога прикрепил... Заранее благодарен!
//+------------------------------------------------------------------+//| B_O_P_Signals.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+enum enMaTypes
{
ma_sma, // Simple moving average
ma_ema, // Exponential moving average
ma_smma, // Smoothed MA
ma_lwma // Linear weighted MA
};
inputint inpSmoothPeriod = 14; // Result smoothing periodinput enMaTypes inpSmoothMethod = ma_sma; // Result smoothing typeinputdouble inpLevelUp = 0.2; // Level upinputdouble inpLevelDown = -0.2; // Level downinputint BarsCount = 100;
double Mid_line[1] = {0.0};
int handle=0;
double TREND_VAL[];
voidOnStart()
{
handle = iCustom(_Symbol,PERIOD_CURRENT,"Balance of Market Power",inpSmoothPeriod,inpSmoothMethod,inpLevelUp,inpLevelDown);
CopyBuffer(handle,2,0,BarsCount,TREND_VAL);
ArraySetAsSeries(TREND_VAL,true);
string Signal ="";
for (int i=ArraySize(TREND_VAL)-1; i>=0; i--)
{
int k=1;
if(TREND_VAL[i] != EMPTY_VALUE && TREND_VAL[i] > Mid_line[0] && TREND_VAL[i] > inpLevelUp)
Signal = "TREND_UP";
elseif (TREND_VAL[i] != EMPTY_VALUE && TREND_VAL[i] > Mid_line[0] && TREND_VAL[i] < inpLevelUp)
Signal = "TREND_UP_ROLLBACK_OR_FLAT";
elseif(TREND_VAL[i] >= Mid_line[0] && TREND_VAL[i+k] <= Mid_line[0])
Signal ="CROSSOVER_OR_REVERSE_UP";
elseif (TREND_VAL[i] != EMPTY_VALUE && TREND_VAL[i] < Mid_line[0] && TREND_VAL[i] < inpLevelDown)
Signal = "TREND_DN";
elseif (TREND_VAL[i] != EMPTY_VALUE && TREND_VAL[i] < Mid_line[0] && TREND_VAL[i] > inpLevelDown)
Signal = "TREND_DN_ROLLBACK_OR_FLAT";
elseif(TREND_VAL[i] < Mid_line[0] && TREND_VAL[i+k] > Mid_line[0])
Signal = "CROSSOVER_OR_REVERSE_DN";
else Signal = "UNKNOWN_SIGNAL";
Print(string(i),"_", Signal);
}
}
//+------------------------------------------------------------------+
Помогите пожалуйста найти ошибку... В скрипте копирую значения баров(BarsCount) с индикаторного буфера, потом обхожу значения в цикле, определяю сигнал и записываю для распечатки в Print(); Вроде все просто, да не тут то было... Получаю все сигналы как и хотел за исключением пересечения нулевой линии
индикатора. Может в скрипте так нельзя? Код и скрин лога прикрепил... Заранее благодарен!
Пересечение можно определить только сравнивая значения предыдущего индекса массива с нулём и значение текущего тоже с нулём. То-есть было выше нуля и стало ниже нуля. Или наоборот, было ниже и стало выше.
И внимательно прочтите в документации как работает if tlse if
Если в вашем коде выполнено одно из условий, то все следующие не обрабатываются.
Пересечение можно определить только сравнивая значения предыдущего индекса массива с нулём и значение текущего тоже с нулём. То-есть было выше нуля и стало ниже нуля. Или наоборот, было ниже и стало выше.
И внимательно прочтите в документации как работает if tlse if
Если в вашем коде выполнено одно из условий, то все следующие не обрабатываются.
Насчет проверки уровня относительно ноля все верно было. Перенес условия пересечения в начало кода стало все отрабатывать. Спасибо!
Я только пытаюсь в программирование советников, и хочу для начала написать статистический сборщик спредов.
Ну то есть, что бы я хотел, чтобы он делал? В тестере запускается советник и собирает данные по истории тиков за определённое время, например за десять дней.
Дальше выдаёт следующие данные в сsv или xlsx файл :
Средний спред за промежуток времени: 00:00 - 09:00 по серверу, 09:00 - 18:00 , 18:00 - 00:00 (за все 10 дней), максимальный спред за это время, минимальный спред и усреднённый спред по валютной паре за весь период в десять дней.
Мне очень надоело это собирать руками.
Я знаю, что есть программы, которые вроде как это сами делают... Но хочу своё, в качестве тренировки.
Может быть уважаемые знатоки подскажут, с чего мне начать? И возможно ли вообще такое написать?
Заранее спасибо всем ответившим и отнесшимся с пониманием к новичку.
Всем привет. Может у кого-то есть готовый кусок кода. Есть 2 параметра, депозит=3000 и лот 0.01 то есть при депозите 3000 лот будет 0.01, теперь строго при удвоении то есть когда депо будет 6000 лот будет 0.02 при 9000 будет 0.03 как это сделать?
Всем привет. Может у кого-то есть готовый кусок кода. Есть 2 параметра, депозит=3000 и лот 0.01 то есть при депозите 3000 лот будет 0.01, теперь строго при удвоении то есть когда депо будет 6000 лот будет 0.02 при 9000 будет 0.03 как это сделать?
Примерно так:
Результат:
Доброго Времени Суток,
Помогите пожалуйста найти ошибку... В скрипте копирую значения баров(BarsCount) с индикаторного буфера, потом обхожу значения в цикле, определяю сигнал и записываю для распечатки в Print(); Вроде все просто, да не тут то было... Получаю все сигналы как и хотел за исключением пересечения нулевой линии
CROSSOVER_OR_REVERSEиндикатора. Может в скрипте так нельзя? Код и скрин лога прикрепил... Заранее благодарен!
Доброго Времени Суток,
Помогите пожалуйста найти ошибку... В скрипте копирую значения баров(BarsCount) с индикаторного буфера, потом обхожу значения в цикле, определяю сигнал и записываю для распечатки в Print(); Вроде все просто, да не тут то было... Получаю все сигналы как и хотел за исключением пересечения нулевой линии
индикатора. Может в скрипте так нельзя? Код и скрин лога прикрепил... Заранее благодарен!
Пересечение можно определить только сравнивая значения предыдущего индекса массива с нулём и значение текущего тоже с нулём. То-есть было выше нуля и стало ниже нуля. Или наоборот, было ниже и стало выше.
И внимательно прочтите в документации как работает if tlse if
Если в вашем коде выполнено одно из условий, то все следующие не обрабатываются.
Пересечение можно определить только сравнивая значения предыдущего индекса массива с нулём и значение текущего тоже с нулём. То-есть было выше нуля и стало ниже нуля. Или наоборот, было ниже и стало выше.
И внимательно прочтите в документации как работает if tlse if
Если в вашем коде выполнено одно из условий, то все следующие не обрабатываются.
Насчет проверки уровня относительно ноля все верно было. Перенес условия пересечения в начало кода стало все отрабатывать. Спасибо!
Вообще вам надо почистить else, они нужны только в тех случаях когда условия взаимоисключающие, а пересечение это отдельные условия.
Написано же: а почему это Вы не соизволили вернуть значение?
Написано же: а почему это Вы не соизволили вернуть значение?
Точно!!! Во блин даю)))