Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Другой вопрос
сейчас мой советник выглядит следующим образом
if(FastMA2 SlowMA1)
{
ClosePositions();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"",MAGIC,0,Blue);
return(0);
Я хочу изменить следующим образом
1. На 15минутном таймфрейме появляется знак покупки
2. если на 5минутном таймфрейме MA пересекается со знаком покупки, то тоже.
ClosePosition. и получить новую позицию
если на 5минут таймфлейм МА изменяется, то уже есть знак продажи
подождите 5минут, чтобы сменить знак покупки,
то ClosePosition. и получаем новую позицию
Пожалуйста, подскажите, как написать эту программу.
Здравствуйте
Я ищу некоторую помощь У меня есть советник, который я использую на демо, а также учусь кодировать. Я пытаюсь понять, как добавить комментарий к системе, чтобы показать мне, какой из 4 критериев входа был использован для открытия позиции. например, если был использован long2, то показать сигнал long2.
Любая помощь была бы очень кстати.
спасибо
Бено
Здравствуйте
Мне нужна помощь. У меня есть советник, который я использую на демо, а также учусь кодировать. Я пытаюсь понять, как добавить комментарий к системе, чтобы показать мне, какой из 4 критериев входа был использован для открытия позиции. например, если был использован long2, то показать сигнал long2.
Любая помощь была бы очень кстати.
спасибо
БеноПосле выполнения условия и использования команды Ordersend() просто вставьте оператор Comment(), Alert() или Print(). В зависимости от того, что вы хотите использовать.
Что-то вроде этого:
if ( long2 == true)
{
Ordersend();
{
Print(" Сигнал long2 принят ");
}
}
Надеюсь, это поможет.
Спасибо, Вульф.
Я должен был посмеяться, я вставил то, что вы предложили, и это вроде как сработало, но теперь у меня только комментарий и никаких открывающихся позиций. любые подсказки
bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift];
bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift];
bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift];bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift];
bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift];bool Long4 = zscore>0.0 && ma<Close[shift];
bool Short4 = zscoreClose[shift];
buysig = Long || Long2 || Long3 || Long4;
sellsig = Short || Short2 || Short3 || Short4;
closebuy=sellsig;
closesell=buysig;
if (curprof>=AccountBalance()*ProfitExit/100.0) {
exit=true;
}
if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {
remorder=true;
}
}
void CheckForOpen() {
int res,tr;
//---- условия продажи
co=CalculateCurrentOrders(Symbol());
if(sellsig && lastsig!=-1) {
co=CalculateCurrentOrders(Symbol());
if (co==0) {
if ( Short == true)
if ( Short2 == true)
if ( Short3 == true)
res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);
Print(" Взят сигнал Short ");
Print(" Взят сигнал Short2 ");
Print(" Взят сигнал Short3 ");
Print(" Взят сигнал Short4 ");
}
lastsig=-1;
last=Time[0];
return;
}
//---- условия покупки
if(buysig && lastsig!=1) {
co=CalculateCurrentOrders(Symbol());
if (co==0) {
if ( Long == true)
if ( Long2 == true)
if ( Long3 == true)
if ( Long4 == true)
res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);
Print(" Длинный сигнал взят ");
Print(" Длинный2 сигнал взят ");
Print(" Взят сигнал Long3 ");
Print(" Взят сигнал Long4 ");
}
last=Time[0];
lastsig=1;
return;
}
}
Исправлено Спасибо
Отладочный код
Как и где вы можете использовать такой код. У меня есть ошибка нулевого деления, которую я не могу найти, как исправить.
extern bool DEBUGGING = true
...
if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- This variable is now ", variableName);
... еще код
if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- This variable is now ", variableName);
... еще код
if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- This variable is now ", variableName);
...
не могли бы вы мне помочь, почему в коде много ошибок?
это для расчета SMMA:
for(j=0;j<Bars;j++)
{
for(i=0,sum=0;i<ma_period;i++)
{
sum=sum+Close[j+i];
// buffer[j]=(sum-sum/ma_period+Close[j+i])/ma_period;
}
buffer[j]=(sum-sum/ma_period+Close[j])/ma_period;
}
это для расчета LWMA
for(j=0;j<Bars;j++)
{
for(i=0,sum=0,sum1=0;i<ma_period;i++)
{
sum=sum+Close[j+i];
sum1=sum1+Close[j+i]*(j+i);
// buffer[j]=sum/ma_period;
}
buffer[j]=sum1/sum;
}
и как рассчитать EMA?
вопрос по индикаторам
Привет всем.
Я застрял на вопросе программирования. Кто-нибудь знает, как использовать результат одного индикатора для изменения другой настройки? Например, если дневной стокасти был выше 20, я бы хотел, чтобы скользящая средняя была равна (x). Я пытался заставить работать приведенный ниже код, но безрезультатно. Я не могу заставить работать команду switch или if else.
double fourhrUP;
double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
double daystoch20 = 20;
if (daystoch1 > daystoch20) four_hrUP = 5 ;
double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)
Привет всем.
Я застрял на вопросе программирования. Кто-нибудь знает, как использовать результат одного индикатора для изменения другой настройки? Например, если дневной стокасти был выше 20, я бы хотел, чтобы скользящая средняя была равна (x). Я пытался заставить работать приведенный ниже код, но безрезультатно. Я не могу заставить работать команду switch или if else.
double fourhrUP;
double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
double daystoch20 = 20;
if (daystoch1 > daystoch20) four_hrUP = 5 ;
double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)Где находится переменная вашего MA?
Возможно, это может помочь
double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);
если расчет стоха происходит в том же цикле, скажем, "for(int shift=limit-1; shift>=0; shift--)", то код стоха должен быть следующим
double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1);
CMIIW
Небольшая помощь с индикатором - Кодеры, пожалуйста, посмотрите
Я тестирую платформу брокера MT4, которая использует дробные пипсы (пипетки) в котировках цен: Например, на EURJPY они котируют 164.381 вместо 164.38 - Это означает, что спред имеет десятичную дробь 4.1 пипса (вместо 4).
Может ли кто-нибудь подсказать мне, как изменить следующий код, чтобы спред отображался правильно? Сейчас спред в 4,1 пункта будет отображаться в индикаторе как 41,0. Любая помощь будет принята с благодарностью.
Дэн
//---- спред
Spread=NormalizeDouble((Ask-Bid)/Point,1);
ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor);
ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor);