Помогите пожалуйсто. Не могу разобраться с циклом for(), все время после обновления, из за смещения (iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) ,индикатор перерисовывает!
//+------------------------------------------------------------------+//| help.mq4 |//| Copyright 2014, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"2005-2014, MetaQuotes Software Corp."#property link"http://www.mql4.com"#property strict#include <MovingAverages.mqh>
//--- indicator settings#property indicator_separate_window#property indicator_buffers2#property indicator_color1 clrSilver#property indicator_color2 clrRed#property indicator_width1 2//--- indicator parametersinputint SignalSMA=8; // Signal SMA Period//--- indicator buffersdouble ExtBuffer[];
double ExtSignalBuffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit(void)
{
IndicatorDigits(Digits+1);
//--- drawing settingsSetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
//--- indicator buffers mappingSetIndexBuffer(0,ExtBuffer);
SetIndexBuffer(1,ExtSignalBuffer);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Moving Averages Convergence/Divergence |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
//--- last counted bar will be recounted
limit=rates_total-prev_calculated;
if(prev_calculated>0)
limit++;
//--- counted in the 1-st bufferfor(i=0;i<limit;i++)
ExtBuffer[i]=(
iMA(NULL,PERIOD_CURRENT,1,0,MODE_SMA,PRICE_HIGH,i)
+iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)
);
//--- signal line counted in the 2-nd buffer
SimpleMAOnBuffer(rates_total,prev_calculated,0,SignalSMA,ExtBuffer,ExtSignalBuffer);
//--- donereturn(rates_total);
}
//+------------------------------------------------------------------+
На мой взгляд вообще подход не логичный. Зачем определять день недели? Какая разница какой сегодня день, если в условии должно быть "сегодня не открывать больше xxx ордеров"?
С моей точки зрения логичней пересчитать открытые сегодня ордера и поставить соответствующее условие. соответственно в условии
не хватает определения даты открытия ордера.
Если знаешь - напиши пжл как это сделать) я не понимаю как сделать так, чтобы в какой-то день не открывалось более n-ного количества ордеров за весь день.
Помогите пожалуйсто. Не могу разобраться с циклом for(), все время после обновления, из за смещения (iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) ,индикатор перерисовывает!
За ранее благодарю.
в ма-шках разные ТФ-мы. нужно как бы вписать старший тайфрейм в ТФ М1, т.е. дважды посчитать МА с разным количеством тиков. При этом одно и то же значение старшего периода будет прибавляться к разным младьшего.
Перебирая i у Вас сейчас берутся к примеру 10 свеч периода D1 и 10 M1. Логически что то не то....
Другое дело, если индикатор устанавливается на М1, там будет работать без перерисовки скорее всего
cripple: Да вы верно подметили, но моего ума пока не хватает чтоб понять как заставить M1 счетать правильно
кроме этого нужно будет синхронизировать М1 с более старшим ТФ-мом по времени, потому что далеко не факт, что 1 бар М5 будет соответствовать 5-ти свечкам М1, может быть и 4-ре и 1.
cripple: Да вы верно подметили, но моего ума пока не хватает чтоб понять как заставить M1 счетать правильно
Попробуй
intBars(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодdatetimestart_time, // с какой датыdatetime stop_time // по какую дату
);
время i-того бара и полученный номер бара вместо i поставить.
LRA: Уважаемый novikov433 !!! Научу Вас программированию, или напишу Вам бесплатно советник или и то и другое!!! В замен научите, как убыточные ордера переводятся в безубыток. Можно на простом примере. Даю жене приказ (ордер): рано утром на базаре купить ведро картошки, а к 10 часам (фундаментальный анализ) цена возрастает - продать. Но иногда к пол-десятому (новости) привозят машину картошки. И цена (на новостях) сразу вниз, и уже до конца дня, а то и на всю неделю. Ставлю СтопЛосс - если цена убавится на 10 руб, сразу продавай, как сможешь (по рыночной цене). Как изменить приказ, чтоб исключить убыток. Если интересен такой вариант - напишите в личку свое мыло.
ну на том примере, что если рынок немного сходил в нужную сторону и потом пошел обратно, то нужно просто закрыть сделку по безубытку и открыть на реверс. бокер fx open с ecn счетом. как вы вобще во все это ело вникаете)))? я как только начинаю, сразу какой то ступор ловлю. щас ещё лишний раз убедился что руками торговать полный бред. как вот вобще взять и понять зачем столько состовляющих нужно писать в коде?
ax00071: Благодарю за внимание )) Вот я лопух . . . . . . на закрытии у меня стояло условие в пятницу в 22:00 закрывать сделку, без доп условий на проверку типа сделки. А сама сделка закрылась на пару часов раньше. Ну и когда стукнуло 22:00 советник начал отправлять ордера на закрытие уже закрытого ордера . . . . .
Вряд ли стоит обзывать себя растением. Если сумел локализовать, осмыслить и исправить такую ошибку - значит приблизился к званию программист!
Помогите пожалуйсто. Не могу разобраться с циклом for(), все время после обновления, из за смещения (iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) ,индикатор перерисовывает!
За ранее благодарю.
На мой взгляд вообще подход не логичный. Зачем определять день недели? Какая разница какой сегодня день, если в условии должно быть "сегодня не открывать больше xxx ордеров"?
С моей точки зрения логичней пересчитать открытые сегодня ордера и поставить соответствующее условие. соответственно в условии
не хватает определения даты открытия ордера.Если знаешь - напиши пжл как это сделать)
я не понимаю как сделать так, чтобы в какой-то день не открывалось более n-ного количества ордеров за весь день.
Помогите пожалуйсто. Не могу разобраться с циклом for(), все время после обновления, из за смещения (iMA(NULL,PERIOD_M1,1,1,MODE_SMA,PRICE_OPEN,i)) ,индикатор перерисовывает!
За ранее благодарю.
в ма-шках разные ТФ-мы. нужно как бы вписать старший тайфрейм в ТФ М1, т.е. дважды посчитать МА с разным количеством тиков. При этом одно и то же значение старшего периода будет прибавляться к разным младьшего.
Перебирая i у Вас сейчас берутся к примеру 10 свеч периода D1 и 10 M1. Логически что то не то....
Другое дело, если индикатор устанавливается на М1, там будет работать без перерисовки скорее всего
в ма-шках разные ТФ-мы. нужно как бы вписать старший тайфрейм в ТФ М1, т.е. дважды посчитать МА с разным количеством тиков.
Перебирая i у Вас сейчас берутся к примеру 10 свеч периода D1 и 10 M1. Логически что то не то....
Да вы верно подметили, но моего ума пока не хватает чтоб понять как заставить M1 счетать правильно
кроме этого нужно будет синхронизировать М1 с более старшим ТФ-мом по времени, потому что далеко не факт, что 1 бар М5 будет соответствовать 5-ти свечкам М1, может быть и 4-ре и 1.
Да вы верно подметили, но моего ума пока не хватает чтоб понять как заставить M1 счетать правильно
Попробуй
время i-того бара и полученный номер бара вместо i поставить.
Уважаемый novikov433 !!! Научу Вас программированию, или напишу Вам бесплатно советник или и то и другое!!! В замен научите, как убыточные ордера переводятся в безубыток. Можно на простом примере. Даю жене приказ (ордер): рано утром на базаре купить ведро картошки, а к 10 часам (фундаментальный анализ) цена возрастает - продать. Но иногда к пол-десятому (новости) привозят машину картошки. И цена (на новостях) сразу вниз, и уже до конца дня, а то и на всю неделю. Ставлю СтопЛосс - если цена убавится на 10 руб, сразу продавай, как сможешь (по рыночной цене). Как изменить приказ, чтоб исключить убыток. Если интересен такой вариант - напишите в личку свое мыло.
Попробуй
время i-того бара и полученный номер бара вместо i поставить.
Вы думали что то наподобие этого?
Благодарю за внимание )) Вот я лопух . . . . . . на закрытии у меня стояло условие в пятницу в 22:00 закрывать сделку, без доп условий на проверку типа сделки. А сама сделка закрылась на пару часов раньше. Ну и когда стукнуло 22:00 советник начал отправлять ордера на закрытие уже закрытого ордера . . . . .