Изучаю язык с циклами всё ясно но вот конкретно в код вставить
не могу если не трудно киньте кусок кода установка StopLoss по минимальным
значениям последних десяти баров.
- почему не открываеться EX4 Форматы?
- Помогите разобраться
- Стоп в без убыток как сделать?
Цикл не нужен, используй
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)];
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)];
Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).
Параметры:
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)];
Спасибо
Вроде всё прописал но чото не торгует укажите на ощибку если
не сложно
#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);
}
}
}
#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);
}
}
}
demon:
Вроде всё прописал но чото не торгует укажите на ощибку если не сложно
((M1<M2)<M3 ) <= ??????????
Если не сложно - что подразумевалось под этим выражением ? Вы
результат первого сравнения (ИСТИНА или ЛОЖЬ) сравниваете со
значением переменной М3, которая не является логической.Вроде всё прописал но чото не торгует укажите на ощибку если не сложно
((M1<M2)<M3 ) <= ??????????
Подозреваю, что это последовательное сравнение, просто записано неверно. Тогда должно быть так:
( (M1<M2) && (M2<M3) )
И, кстати, переменные М1, М2, М3 должны быть описаны как переменные с плавающей точкой, а не целочисленные ( double, а не int) иначе не соответствует возвращаемому значению функции iMA(......);
Я уже сам догнал спасибо за ответ извени за тупой вопрос
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь