[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1127
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Большое спасибо за помощь =)
Не забывайте что в тестере индикатор не выбрасывает окно алертов, а вместо этого пишет алерт-сообщения в журнал. Всё же лучше подобные куски кода отлаживать скриптами - быстрее получается.
И ещё, сообщения индикатора, как ни странно, пишутся в тестере не в тестерные журналы, а в журналы работы реалтайма.
http://www.google.ru/search?as_sitesearch=mql4.com&as_q=%EA%EE%EC%E8%F1%F1%E8%FF+%E2+%F2%E5%F1%F2%E5%F0%E5
"В лоб" задача не решается.
Можно так
Или вот еще нашел
спасибо!
Я не вполне понимаю,как работают условия.
Я решил разобрать,как работает индикатор фракталов,отличие MODE_UPPER и MODE_LOWER,и написал такую фигню
int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}
WindowFirstVisibleBar() дает количество баров на графике, эта штука работает,если из эксперта вычеркнуть if (up>=1||down>=1),он дает прекрасный ряд посчитанных баров,только их очень много.
Это вроде || знак или,оператор вроде делает написанное в скобкаххъ {} если хоть одно из условий верно,или верны оба сразу,так ведь?или нет?
У меня Вообще ничего не поменялось!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вроде,все верно написано.Помогите!!!!!!!!Разьясните!!!!!!!
Я не вполне понимаю,как работают условия.
Я решил разобрать,как работает индикатор фракталов,отличие MODE_UPPER и MODE_LOWER,и написал такую фигню
int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}
WindowFirstVisibleBar() дает количество баров на графике, эта штука работает,если из эксперта вычеркнуть if (up>=1||down>=1),он дает прекрасный ряд посчитанных баров,только их очень много.
Это вроде || знак или,оператор вроде делает написанное в скобкаххъ {} если хоть одно из условий верно,или верны оба сразу,так ведь?или нет?
У меня Вообще ничего не поменялось!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вроде,все верно написано.Помогите!!!!!!!!Разьясните!!!!!!!
нормально код размещайте через контр-альт - М - быстрее получите ответ...без восклицаний.
Это вроде ||
https://docs.mql4.com/ru/basis/operations/bool
Логическая операция ИЛИ..
Зы контр-альт - М - это как SRC нажать кнопочку и код через нее вставить.
Пробовал я крутить тот код, котоый вы мне предложили. Результат всегда один и тот же - продолжает открывать сделки в течение дня. Повторюсь, что хотелось бы сохранить возможность включения/выключения.
Вот перепробованые варианты:
extern bool WaitForNewDay = true;
void init()
{
SMB=Symbol();
return;
}
void start()
{
bool Trade=true;
if(WaitForNewDay){if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)!=0) Trade=false;}
if(CalculateCurrentOrders(Symbol())==0 && Trade)
{CheckForOpen(); return;}
}
//-----------------------------------------------------------------
int HistoryBuy(int MAGICMA)
{int BuyOrders=0;
for (int i=OrdersHistoryTotal()-1;i>=0;i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
Print(" ",GetLastError()," ",i);
}
else {
if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGICMA){ continue;}
if(OrderType()==OP_BUY){
if(OrderOpenTime()>=iTime(SMB,PERIOD_D1,0)){
BuyOrders++;
}
}
}
}
return(BuyOrders);
}
//-----------------------------------------------------------------
int HistorySell(int MAGICMA){
int SellOrders=0;
for (int i=OrdersHistoryTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
Print(" ",GetLastError()," ",i);
}
else {
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGICMA){ continue;}
if(OrderType()==OP_SELL){
if(OrderOpenTime()>=iTime(SMB,PERIOD_D1,0)){
SellOrders++;
}
}
}
}
return(SellOrders);
}
//////////////Другой вариант/////////////////////
extern bool WaitForNewDay = true;
Trade=true;
void init()
{
SMB=Symbol();
if(WaitForNewDay) {Trade=false;}
return;
}
void start()
{
if(WaitForNewDay) {if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)==0) Trade=true;}
if(CalculateCurrentOrders(Symbol())==0 && Trade)
{CheckForOpen(); Trade=false; return;}
}