[Архив!] Напишу советника бесплатно - страница 25

 
for (int i=Bars-2; i>=0; i--)
{
 double dc=Close[i]-Close[i+1];
 if (dc>=0) dc_D[i]=dc; else dc_U[i]=-dc;
 if (mr==1) { U[i]=mov(dc_U[i], n, s);  D[i]=mov(dc_D[i], n, s); }
 if (mr==2) { U[i]=U[i+1]*(n-1)+dc_U[i])/n;  D[i]=D[i+1]*(n-1)+dc_D[i])/n;  }
 if (D[i]!=0 && 1+U[i]/D[i]!=0)
 {
  if (mru==1) MyRSI[i]=mov(100/(1+U[i]/D[i]), n1, s); 
  if (mru==2) MyRSI[i]=mov(100/(1+U[i]/D[i]), n1, e);
 }
}

вот как то так. я не совсем понял что такое mov. Мне так кажется, что это расчёт скользящей средней

dc_D, dc_U, D, U, MyRSI - // это индикаторные буфера
 

ну да U[i]=mov(dc_U[i], n, s) скользящая средняя простая.

получается что мы еще все массивы не заполили а уже на них ссылаемся, или нет?

вот в этой строке?

if (mr==2) { U[i]=U[i+1]*(n-1)+dc_U[i])/n; D[i]=D[i+1]*(n-1)+dc_D[i])/n; }

 

Простите. А можно не индюк, а просто код чтобы вставить в советник для получения значения?

 
Здравствуйте, скажите, а Вы можете написать советника по без индикаторной стратегии, я могу подробно все описать, и даже картинку если надо прикреплю. Жду ответа. Спасибо.
 
Gigabyte >>:
Здравствуйте, скажите, а Вы можете написать советника по без индикаторной стратегии, я могу подробно все описать, и даже картинку если надо прикреплю. Жду ответа. Спасибо.

прочитайте первый пост этой темы.

 
Здравствуйте.Очень замечательный эксперт 10 пунктов по EURUSD & GBPUSD,Пробой максимума и минимума предыдущего дня.Можно ли его слегка модернизировать чтобы при открытий BUYSTOP советник открывал позицию с учетом H+spread+0,00003 пункта,а при открытий SELLSTOP советник открывал позицию с учетом L-0,00003 пункта.


Пример при открытии ордера на покупку: ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,H+Spred+Spred,0,H-SL+Spred+Spred,H+TP+Spred+Spred,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-Существующие данные.

Изменить на: ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,H+Spred+0,00003,0,H-SL+Spred+0,00003,H+TP+Spred+0,00003,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-Измененные данные.

Пример при открытии ордера на продажу:ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,L-Spred,0,L-Spred+SL,L-Spred-TP,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-существующие данные.

Изменить на:ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,L-0,00003,0,L-0,00003+SL,L-0,00003-TP,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-Измененные данные

Н - максимум предыдущего дня

L - минимум предыдущего дня

0,00003 - количество пунктов для МТ4 с пятизначными котировками.( И чтобы количество пунктов можно было всегда изменить
Файлы:
expertq10.mq4  5 kb
 
Господа программисты, знатоки MQL очень хочется копировщик сделок с реверсом, т.е. чтобы была возможность открывать противоположные образцовому счету ордера, очень пригодится для сливающих советников ну и всяких сливаторов, чтобы был полный переворот: например если сигнал на sell c TP и SL на образцовом счете, а на моем счете чтобы открывалась полностью обратная позиция вместо sell - buy, вместо TP - SL, вместо SL - TP, с отложенниками все по такой же схеме, буду очень признателен, но в разумных пределах.
 
sigma_sura >>:
Господа программисты, знатоки MQL очень хочется копировщик сделок с реверсом, т.е. чтобы была возможность открывать противоположные образцовому счету ордера, очень пригодится для сливающих советников ну и всяких сливаторов, чтобы был полный переворот: например если сигнал на sell c TP и SL на образцовом счете, а на моем счете чтобы открывалась полностью обратная позиция вместо sell - buy, вместо TP - SL, вместо SL - TP, с отложенниками все по такой же схеме, буду очень признателен, но в разумных пределах.


Вроде такой у Кима есть, посомтри на его сайте.
 
Vinin >>:

А в какой зигзаг? а то их много.

Здравствуйте.Очень замечательный эксперт 10 пунктов по EURUSD & GBPUSD,Пробой максимума и минимума предыдущего дня.Можно ли его слегка модернизировать чтобы при открытий BUYSTOP советник открывал позицию с учетом H+spread+0,00003 пункта,а при открытий SELLSTOP советник открывал позицию с учетом L-0,00003 пункта.


Пример при открытии ордера на покупку: ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,H+Spred+Spred,0,H-SL+Spred+Spred,H+TP+Spred+Spred,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-Существующие данные.

Изменить на: ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,H+Spred+0,00003,0,H-SL+Spred+0,00003,H+TP+Spred+0,00003,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-Измененные данные.

Пример при открытии ордера на продажу:ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,L-Spred,0,L-Spred+SL,L-Spred-TP,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-существующие данные.
   
Изменить на:ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,L-0,00003,0,L-0,00003+SL,L-0,00003-TP,NULL,MagicNumber,iTime( Symbol(), PERIOD_D1, 0 ) + 86400);-Измененные данные

Н - максимум предыдущего дня

L - минимум предыдущего дня

0,00003 - количество пунктов для МТ4 с пятизначными котировками.( И чтобы количество пунктов можно было всегда изменить

Файлы:
expertu10.mq4  5 kb
 
vasilii8-85 >>:

Так в чем у Вас проблема? Вы же написали на что хотите изменить (и притом как изменить:)). Осталось только открыть MetaEditor и исправить код. А чтобы количество пунктов можно было изменить сделайте так:

extern double delta=0.00003;//вставить перед start()
И везде в коде где хотите поставить 0.00003 пишите delta 
PS. Писать один и тот же вопрос в нескольких темах не есть хорошо:)
Причина обращения: