Спрашивайте! - страница 76

 

Вопрос по советнику

Здравствуйте, Codersguru,

Я пытаюсь изучать программирование и использую ваш материал, позвольте мне сказать, что он превосходен! Шаг за шагом и просто следовать, спасибо за это.

У меня вопрос, поскольку вы используете пересечение ema в качестве примера для советника, я думал использовать индикатор stepMA_7.2 вместо ema. Как вы думаете, будет ли работать stepMA_7.2? Или нужно будет перестроить код или, возможно, потребуется дополнительный код?

Я думал просто поменять местами индикаторы в коде.

Заранее спасибо

Будьте здоровы.

 
Michel:
Это неправильно: предыдущие бары считаются положительными
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Спасибо.

 
 

У меня все еще есть некоторые проблемы. Ордера на покупку открываются правильно, но все закрываются по стоплоссу, игнорируя условия выхода.

//+------------------------------------------------------------------+

//| EA Stripped Down.mq4 |

//+------------------------------------------------------------------+

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

//+------------------------------------------------------------------+

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

int start()

{

//+------------------------------------------------------------------+

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

//+------------------------------------------------------------------+

}
 
 

Скользящая средняя другого индикатора

Выяснили.

 

проверка наличия открытых позиций в диапазоне

Я пытаюсь проверить наличие открытых позиций в пределах x пунктов, если ни одна позиция не открыта, она откроет одну. Это не работает и просто постоянно открывает позиции, может ли кто-нибудь помочь?

if(BuyPosition)

{

weBeBuying = true;

totalorders = OrdersTotal();

for(i=0;i<totalorders;i++)

{

OrderSelect(i,SELECT_BY_POS);

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

type = OrderType();

if((type == OP_BUY) || (type == OP_BUYLIMIT))

{

if((((Bid+spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = false;

}

}

}

}

if(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,lots,Bid+spread,slippage,0,0,NULL,magicNumber,0,Green);

 

MA индикатора iCustom

Как мне закодировать утверждение в ea для ссылки на скользящую среднюю 7, Smooth, индикатора iCustom????? Что равносильно использованию скользящей средней по данным первого индикатора. Это можно сделать при отображении индикатора iCustom и наличии MA индикатора (Using first indicators data), но как это закодировать в ea?

Пожалуйста, помогите мне в этом вопросе!

Заранее благодарю за помощь!

Дэйв

Кто-нибудь может помочь с этим???? Please!!!!

Кажется, я понял!

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); //LOWER GAMMA

Все еще нужна помощь в этом - Вы можете мне помочь!

 

Sere вы можете разместить свои вопросы, связанные с MQL4, и я сделаю все возможное, чтобы ответить на них

по поводу кода ошибки.

Мне только что вернули счет, что на всех моих экспертах у меня код ошибки "OrderModify error 1", даже с таким экспертом, как Coders Guru, ниже,

почему?

Спасибо!

//+------------------------------------------------------------------+

//| PriceCross.mq4 |

//| Coders Guru |

//| https://www.mql5.com/en/forum |

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Включает

#include

//---- Лимиты сделок

extern double TakeProfit = 200;

extern double TrailingStop = 50;

extern double StopLoss = 50;

extern double Lots = 0.1;

extern int Slippage = 5;

//--- Внешние опции

extern int CurrentBar = 1;

extern int HedgeLevel = 6;

extern double Expiration = 7200;

extern int Size = 4;

extern int Step = 1;

extern bool UseClose = true;

//--- Настройки индикаторов

extern int MaMode = 3;

extern int MaPeriod = 24;

//--- Глобальные переменные

int MagicNumber = 101090;

string ExpertComment = "PriceCross";

bool LimitPairs = true;

bool LimitFrame = true;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // добавляем/удаляем пары, которые вы хотите ограничить.

bool Optimize = true;

int NumberOfTries = 5;

//+------------------------------------------------------------------

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------

bool isNewSymbol(string current_symbol)

{

//перебираем все открытые ордера и сравниваем символы

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (False);

}

return (True);

}

//+------------------------------------------------------------------+

int start()

{

int cnt, ticket, total, n;

double trend ;

if(Bars<100) {Print("баров меньше 100"); return(0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("Этот советник не работает с этим таймфреймом!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("Этот советник не работает с этой валютой!"); return(0);}

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- Торговые условия

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

if (Open[1]trend)

BuyCondition = true;

if (Open[1]>trend && Close[1]<trend)

SellCondition = true;

if (Open[1]>trend && Close[1]<trend)

CloseBuyCondition = true;

if (Open[1]trend)

CloseSellCondition = true;

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- Условие ПОКУПКИ

{

ticket = OpenOrder(OP_BUY); //<-- Открыть ордер BUY

CheckError(ticket, "BUY");

for(n=0 ; n< Size ; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

if(SellCondition) //<-- условие SELL

{

ticket = OpenOrder(OP_SELL); //<-- Открываем ордер SELL

CheckError(ticket, "SELL");

for(n=0 ; n < Size ; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- Открыта длинная позиция

{

if(UseClose)

{

if(CloseBuyCondition) //<-- Закрываем ордер и выходим!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Отслеживание ордера

}

if(OrderType()==OP_SELL) //<-- Переход в короткую позицию

{

if(UseClose)

{

if(CloseSellCondition) //<-- Закрыть ордер и выйти!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Отслеживание ордера

}

}

}

return(0);

}

//+------------------------------------------------------------------+

....

 

Здравствуйте,

Можно ли как-то узнать, что ордер уже закрыт?

Иллюстрация выглядит следующим образом:

Я открываю 2 отложенных ордера.

open #182 buy limit 0.17 EURUSD at 1.3005 sl: 1.2970 tp: 1.3013

open #183 buy limit 0.17 EURUSD at 1.3000 sl: 1.2968 tp: 1.3011

затем

ордер #182, buy 0.17 EURUSD открывается на уровне 1.3005

тейк-профит #182 на уровне 1.3013 (1.3013 / 1.3015)

Я хочу удалить ордер #183 после того, как ордер #182 будет закрыт. Если ордер #182 закрылся, то ордер #183 будет удален.

Спасибо