#mql4
Вопрос:
Я хочу подсчитать бары rsi ниже или выше 70 и 30 . область перепроданности и покупки rsi иногда очень сильна в импульсе.они не возвращаются сразу, как обычно знают. Поэтому я хочу посчитать, если бары RSI выше и ниже 70 30 для 5 баров. открывайте заказы, которые я кодирую так
for(int i = 0; i<20 ;i )
{
rsi1 = iRSI(Symbol(),0,10,PRICE_CLOSE,i 1);
Print("RSI1 is " rsi1 "");
rsi2 = iRSI(Symbol(),0,10,PRICE_CLOSE,i 2);
Print("RSI2 is " rsi2 "");
rsi3 = iRSI(Symbol(),0,10,PRICE_CLOSE,i 3);
Print("RSI3 is " rsi3 "");
rsi4 = iRSI(Symbol(),0,10,PRICE_CLOSE,i 4);
Print("RSI4 is " rsi4 "");
}
if(OrdersTotal() == 0 ){
if( rsi1 > 70 amp;amp; rsi2 > 70 amp;amp; rsi3 > 70 amp;amp; rsi4 > 70 )
OrderSend(Symbol(),OP_BUY,1,MarketInfo(Symbol(),MODE_ASK),3,0,0,"Main Buy",1111,0,Green);//this is rabbit
if( rsi1 < 30 amp;amp; rsi2 < 30 amp;amp; rsi3 < 30 amp;amp; rsi4 < 30 )
OrderSend(Symbol(),OP_SELL,1,MarketInfo(Symbol(),MODE_BID),3,0,0,"Main Sell",1111,0,Red);//this is rabbit
Но на самом деле он не считает 5 баров
, а считает только 1 бар и открытые ордера.
Как это можно решить.
Пожалуйста, кто-нибудь, помогите мне.
хочу посчитать отсюда до сюда .
Комментарии:
1.
for
Цикл переопределяет значения на каждой итерации. В конце концов, у вас есть ценности для 19 1, 19 2, 19 3 и так далее. Какова цель цикла for?2. петля для подсчета баров, братан. 0 1 , 1 1,2 1, и т. Д…. для подсчета последних баров RSI ниже уровня 70 30 . что случилось?
Ответ №1:
В for
цикле нет необходимости, это не индикатор, и вы не работаете с историческими данными. Если вы хотите проверить последние 5 закрытых свечей, ваш код должен быть:
double rsi1 = iRSI(NULL,0,10,PRICE_CLOSE,1); Print("RSI1 is " rsi1);
double rsi2 = iRSI(NULL,0,10,PRICE_CLOSE,2); Print("RSI2 is " rsi2);
double rsi3 = iRSI(NULL,0,10,PRICE_CLOSE,3); Print("RSI3 is " rsi3);
double rsi4 = iRSI(NULL,0,10,PRICE_CLOSE,4); Print("RSI4 is " rsi4);
double rsi5 = iRSI(NULL,0,10,PRICE_CLOSE,5); Print("RSI5 is " rsi5);
if(OrdersTotal() == 0 )
{
if(rsi1>70 amp;amp; rsi2>70 amp;amp; rsi3>70 amp;amp; rsi4>70 amp;amp; rsi5>70)
OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"Main Buy",1111,0,clrGreen);
if(rsi1<30 amp;amp; rsi2<30 amp;amp; rsi3<30 amp;amp; rsi4<30 amp;amp; rsi5<30)
OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"Main Sell",1111,0,clrRed);
}