![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вопрос по советнику
Здравствуйте, Codersguru,
Я пытаюсь изучать программирование и использую ваш материал, позвольте мне сказать, что он превосходен! Шаг за шагом и просто следовать, спасибо за это.
У меня вопрос, поскольку вы используете пересечение ema в качестве примера для советника, я думал использовать индикатор stepMA_7.2 вместо ema. Как вы думаете, будет ли работать stepMA_7.2? Или нужно будет перестроить код или, возможно, потребуется дополнительный код?
Я думал просто поменять местами индикаторы в коде.
Заранее спасибо![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Будьте здоровы.
Это неправильно: предыдущие бары считаются положительными
Спасибо.
У меня все еще есть некоторые проблемы. Ордера на покупку открываются правильно, но все закрываются по стоплоссу, игнорируя условия выхода.
//| 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 будет удален.
Спасибо