[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 291
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите пожалуста есть советник на пробой фракталов .Я подобрал хорошие параметри токо нужно добавить чтоб он ставил лот по мартингейлу (в 2 больше при проиграше).Или дайте силку на советник которий будет токо удваить лот без дрейдинга чтоб 2 сразу запустить(если есть такое) .Вот советник:
//+------------------------------------------------------------------+
//| Fractals.mq4 |
//| TO |
//| http://www.forex-tradexperts-to.narod.ru |
//+------------------------------------------------------------------+
#property copyright "TO"
#property link "http://www.forex-tradexperts-to.narod.ru"
#include <WinUser32.mqh>
extern int TP_Fract_3=300;
extern int SL_Fract_3=200;
extern int TP_Fract_11=500;
extern int SL_Fract_11=300;
extern bool buy_Fract_3=true;
extern bool sell_Fract_3=true;
extern bool buy_Fract_11=true;
extern bool sell_Fract_11=true;
extern bool podtvergdenie=false;
extern int tofract=10;
extern double lots=0.1;
extern int ID = 5452;
string com;
double spread;
int init()
{
com=DoubleToStr(ID,0);
spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;
return(0);
}
int deinit()
{
return(0);
}
datetime t1,t2=0;
bool order(double price,int type,string c,int m)
{
int i;
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==c && OrderMagicNumber()==m && OrderOpenPrice()==price && OrderType()==type)return(false);
if(i==0)return(true);
}
if(OrdersTotal()==0)return(true);
}
int start()
{
int i,ret;
t1=Time[0];
if(t1!=t2)
{
int fract_buy_3=iHighest(Symbol(), Period(),MODE_HIGH,5,1);
int fract_sell_3=iLowest(Symbol(), Period(),MODE_LOW,5,1);
int fract_buy_11=iHighest(Symbol(), Period(),MODE_HIGH,21,1);
int fract_sell_11=iLowest(Symbol(), Period(),MODE_LOW,21,1);
if( fract_buy_3==3 && buy_Fract_3==true)
{
if(OrdersTotal()==0)if(order(High[fract_buy_3]+tofract*Point+spread,4,com,5))OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,com,5);
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==5 && OrderType()==4)
{
OrderModify(OrderTicket(),High[fract_buy_3]+tofract*Point+spread, High[fract_buy_3]+tofract*Point-SL_Fract_3*Point, High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,0,Blue);
break;
}
if(i==0)if(order(High[fract_buy_3]+tofract*Point+spread,4,com,5))
{
if(podtvergdenie)
{
ret=MessageBox("Сигнал на "+Symbol()+" H1 BUYSTOP "+"\nУстановить ордер?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,com,5);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,com,5);
}
}
}
if( fract_sell_3==3 && sell_Fract_3==true)
{
if(OrdersTotal()==0)if(order(Low[fract_sell_3]-tofract*Point,5,com,5))OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,com,5);
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==5 && OrderType()==5)
{
OrderModify(OrderTicket(),Low[fract_sell_3]-tofract*Point,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,0,Red);
break;
}
if(i==0)if(order(Low[fract_sell_3]-tofract*Point,5,com,5))
{
if(podtvergdenie)
{
ret=MessageBox("Сигнал на "+Symbol()+" H1 SELLSTOP "+"\nУстановить ордер?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,com,5);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,com,5);
}
}
}
if( fract_buy_11==11 && buy_Fract_11==true)
{
if(OrdersTotal()==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,com,21);
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==21 && OrderType()==4)
{
OrderModify(OrderTicket(),High[fract_buy_11]+tofract*Point+spread, High[fract_buy_11]+tofract*Point-SL_Fract_11*Point, High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,0,Blue);
break;
}
if(i==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))
{
if(podtvergdenie)
{
ret=MessageBox("Сигнал на "+Symbol()+" H4 BUYSTOP "+"\nУстановить ордер?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,com,21);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,com,21);
}
}
}
if( fract_sell_11==11 && sell_Fract_11==true)
{
if(OrdersTotal()==0)if(order(Low[fract_sell_11]-tofract*Point,5,com,21))OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,com,21);
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==21 && OrderType()==5)
{
OrderModify(OrderTicket(),Low[fract_sell_11]-tofract*Point,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,0,Red);
break;
}
if(i==0)if(order(Low[fract_sell_11]-tofract*Point,5,com,21))
{
if(podtvergdenie)
{
ret=MessageBox("Сигнал на "+Symbol()+" H4 BUYSTOP "+"\nУстановить ордер?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,com,21);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,com,21);
}
}
}
t2=Time[0];
}
return(0);
}
Плохо пишу по русски простите!
Плохо пишу по русски простите!
Скажите кто может помоч с климовским блоком, проблема заключается в том что он возращяет не значение последнего закрытого а значение последнего закрытого по условию
тобиш при 2 условиях
он возращяет одновремено по обоим значениям True,
как зделать чтоб он брал только последний закрытый ордер а не последний по условию,
вот сам код я в него добавил проверку по лотам для своего удобства
Скажите кто может помоч с климовским блоком, проблема заключается в том что он возращяет не значение последнего закрытого а значение последнего закрытого по условию
тобиш при 2 условиях
он возращяет одновремено по обоим значениям True,
как зделать чтоб он брал только последний закрытый ордер а не последний по условию,
вот сам код я в него добавил проверку по лотам для своего удобства
Проверку лотов в ф-цию сами добавили? Вот теперь они и проверяют последние закрытые позиции с переданным лотом, причём лот наверняка всегда нулю равен, либо целое число. Переменная ll должна иметь тип double. А вообще зачем тут проверка на лот?
Вы напишите чего добиться хотите, а вам подскажут :)
Да, и почему лот - int? Лот всегда был double.
Можно так, когда у Вас останется один ордер, определите какой остался и проведите поиск для противоположного.
Скажите кто может помоч с климовским блоком...
Проверку лотов в ф-цию сами добавили? Вот теперь они и проверяют последние закрытые позиции с переданным лотом, причём лот наверняка всегда нулю равен, либо целое число. Переменная ll должна иметь тип double. А вообще зачем тут проверка на лот?
Вы напишите чего добиться хотите, а вам подскажут :)
да я вроде на писал конкретно чего хочу добится вернее я уже всего добился но есть 1 баг это в определеный момен выскакивает не нужный ордер,
замена double на int, изначально было double но петем поиска почему поменял и видать просто забыл вернуть, да и без проверки по лоту если использывать функцию отдельно то результат не меняется, так что может я не правельно включил проверку полотам сюда, одним словам помогите разобратся в чем баг
вот так запросы выглядять
Да, и почему лот - int? Лот всегда был double.
Можно так, когда у Вас останется один ордер, определите какой остался и проведите поиск для противоположного.
не все так просто ибо меняется условия для открытия тобиш может быть 2 по селл, и тода данный поиск не чего не найдет
Не надо дублировать сообщения в разных ветках, это дурной тон.
извеняюсь больше постараю не забывать удалять одинаковые посты из разных тем,