Скачать MetaTrader 5

вопрос по циклу

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Demon
32
Demon  
Изучаю язык с циклами всё ясно но вот конкретно в код вставить не могу если не трудно киньте кусок кода установка StopLoss по минимальным значениям последних десяти баров.
Rashid Umarov
Админ
12052
Rashid Umarov  
Цикл не нужен, используй
int Highest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).

Параметры:

symbol - Символьное имя инструмента, на данных которого будет производиться поиск. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
type - Идентификатор таймсерии. Может быть любым из значений иденитификаторов таймсерий.
count - Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start - Смещение (относительно текущего) начального бара, с которого начинается поиск наибольшего значения.

Пример:

double val;
// расчет самого верхнего значения в дипазоне с 5 элементов в 25 элементов
// индикатор помещает в диаграмму символ и рамку времени диаграмм индикатора
val=High[Highest(NULL,0,MODE_HIGH,20,4)];

int Lowest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

Возвращает индекс найденного наименьшего значения (смещение относительно текущего бара).

Параметры:

symbol - Символьное имя инструмента, на данных которого будет производиться поиск. NULL означает текущий символ.
timeframe - Период. Может быть одним из значений периодов графика. 0 означает период текущего графика.
type - Идентификатор таймсерии. Может быть любым из значений идентификаторов таймсерий.
count - Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start - Смещение (относительно текущего) начального бара, с которого начинается поиск наименьшего значения.

Пример:

double val=Low[Lowest(NULL,0,MODE_LOW,10,10)];
Demon
32
Demon  
Спасибо
Demon
32
Demon  
Вроде всё прописал но чото не торгует укажите на ощибку если не сложно

#property copyright "Vuki"
#property link

//---- input parameters
extern double Lots=0.1;
extern int MA1=9;//скользящая средняя
extern int MA2=21;//скользящая средняя
extern int MA3=120;//скользящая средняя
extern int MA4=120;//скользящая средняя
extern int Kperiod=5;
extern int Dperiod=3;
double TakeProfit,StopLoss;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
if(Bars<100){ Print("bars less than 100"); return(0); }
if(AccountFreeMargin()<(500*Lots)){
Print("Нету свободных денег. Free Margin = ", AccountFreeMargin());
return(0);
}
if(TakeProfit<10){ Print("TakeProfit less than 10"); return(0); }
if(StopLoss<10){ Print("StopLoss less than 10"); return(0); }

int start()
{
int M1,M2,M3,M4,stok,tiket;
M1=iMA(NULL,0,MA1,0,MODE_EMA,PRICE_CLOSE,0);
M2=iMA(NULL,0,MA2,0,MODE_EMA,PRICE_CLOSE,0);
M3=iMA(NULL,0,MA3,0,MODE_EMA,PRICE_CLOSE,0);
M4=iMA(NULL,0,MA4,0,MODE_EMA,PRICE_CLOSE,1);
stok=iStochastic(NULL,0,Kperiod,Dperiod,3,MODE_SMA,0,MODE_MAIN,0);
//Ставим Стоп
{
StopLoss=Low[Lowest(NULL,0,MODE_LOW,10,10)];
}
//Ставим Профит
{
TakeProfit=High[Highest(NULL,0,MODE_HIGH,20,4)];
}
tiket=OrdersTotal();
{
if(tiket>1)return(0);
}
{
if(AccountFreeMargin()<(500*Lots))
{
Print("Недостаточно денег. Free Margin = ", AccountFreeMargin());
return(0);
}

if((M1<M2)<M3&&(M3<M4)&&(stok>80))
{
tiket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,TakeProfit,
"Мой заказ",Red);
return(0);
}

if((M1>M2)>M3&&(M3>M4)&&(stok<30))
{
tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit,
"Мой заказ",Green);
return(0);
}
}
}




Vladyslav Goshkov
2151
Vladyslav Goshkov  
demon:
Вроде всё прописал но чото не торгует укажите на ощибку если не сложно
((M1<M2)<M3 ) <= ??????????
Если не сложно - что подразумевалось под этим выражением ? Вы результат первого сравнения (ИСТИНА или ЛОЖЬ) сравниваете со значением переменной М3, которая не является логической.

Подозреваю, что это последовательное сравнение, просто записано неверно. Тогда должно быть так:
( (M1<M2) && (M2<M3) )


И, кстати, переменные М1, М2, М3 должны быть описаны как переменные с плавающей точкой, а не целочисленные ( double, а не int) иначе не соответствует возвращаемому значению функции iMA(......);
Demon
32
Demon  
Я уже сам догнал спасибо за ответ извени за тупой вопрос
Zaebali_Suki2
39
Zaebali_Suki2  

ПРИВЕТ ФОРУМНЫЕ ПИДОРАСЫ!!!
НЕ ПОРА ЛИ С УТРЕЦА,
ХУЙ СОСУНУТЬ ВАМ С ЛЕГОНЦА?
(ПОРА ПОРА)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий