Как кодировать? - страница 176

 

Atr decresing code ???

Atr decresing - что такое код mql4 ?

--------------------------------------------------------------------------------

Atr decresing

что такое код mql4?

Я бы хотел, чтобы моя ea не открывала позиции, если

ATR d1 > ATR d1 (-1)

 

Как закодировать 3 уровня трейлинг-стопов

ТрейлингСтоп = 50;

TrailingStop_Over100 = 30;

TrailingStop_Over150 = 20;

Уровень 1: прибыль 0-100 пунктов - TS равен 50 пунктам

Уровень 2: прибыль 101-150 пунктов - TS изменяется на 30 пунктов

Уровень 3: прибыль 151+ пунктов - TS изменяется на 20 пунктов.

Как мне закодировать это( движение вположительном направлении ), чтобы TS изменился, когда прибыль увеличится?

Дэйв

<<<

Был бы очень признателен за опыт кодера.

 

после первого пересечения установить расстояние между несколькими барами

Привет всем гуру программирования, я новичок в программировании mql4 и застрял на проблеме,

дело обстоит следующим образом:

У меня есть 2 EMA 5 и 20 PERIOD_15 и соответственно 5 и 20 EMA на PERIOD_H1.

Поэтому, когда я вхожу в позицию с первым крестом PERIOD_M15, советник сразу же закрывает позицию в том же баре, если цена движется в другую сторону и делает обратный крест. Это программно правильно, но моя фактическая проблема заключается в том, чтобы подождать следующие 1-2 или более баров и затем закрыть позицию, если будет обнаружен крест.

Можете ли вы помочь мне сделать это? Если здесь есть какая-то тема с такой же проблемой, не могли бы вы прислать мне ссылку.

и модераторы могут удалить это сообщение.

заранее спасибо!!!

-- если у вас уже есть открытая позиция

-- если происходит слишком много пересечений

-- подождите немного перед выходом из этой позиции.

-это должно решить проблему повторных пересечений на одном баре

if(firstCross == 1)

{

---------------------------//Close, проверяем, печатаются ли следующие несколько баров после OpenOrderPrise()-----------------------------------

if(openbar <= closebar)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); // закрытие позиции

return(0); // выход

иначе

return(0);

}

ну я нашел жуткое решение я уже прикрепил.

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

Файлы:
 

Нужна ваша помощь

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

Я буду очень признателен, если кто-нибудь поможет мне разработать алерт к этому индикатору (MT4-LevelStop-Reverse-vB0-3).

Я хочу, чтобы алерт срабатывал сразу после появления стрелки.

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

Файлы:
 
chiwing:
привет,

я использую ваш lucky v2, и хочу узнать код добавления текста на график, который не использует объект--label-->смотрите рисунок ~~.

и пользователь не может удалить текст~ ~

текст выглядит так: "Your lucky is free and still on developing...".

как это закодировать?

спасибо

Используйте команду Comment()

Комментарий - Документация по MQL4

 

как закодировать текст uneliminateAble на графике

привет,

я использую ваш lucky v2, и хочу узнать код добавления текста на график, который не использует объект--label-->смотрите картинку ~~.

и пользователь не может удалить текст~ ~

текст выглядит так: "Советник Your lucky v2 бесплатный и находится в разработке...".

как это закодировать?

спасибо

Файлы:
how_to_code.jpg  134 kb
 

Множественный ордер и множественный трейлинг

В моем Ea я использую несколько ордеров, один на рынке, а другой с лимитом покупки/продажи.

Когда я получаю 3 входа, как в примере, я хочу, чтобы трейлинг начинался вместе и работал вместе.

Пример

1 вход на уровне 1.50

2 вход при 1.4950

3 вход на 1.4930

трейлинг составляет 50 пунктов, но я хочу, чтобы он начинался при достижении 1.5050, а не раньше, если я использую обычный трейлинг, когда цена достигнет 1.5001, второй вход (если он заполнится) начнет отслеживаться, но я не хочу этого... я хочу, чтобы трейлинг начинался с 50 пунктов и все по одной и той же цене, то есть по 1.5050.

Так что лучше сохранить билет, чтобы понять, какой ордер я использую?

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-Point*StopLoss,Ask+TakeProfit*Point,0,0,Green);

LastClosedBar = Time[0];

RefreshRates();

OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

entratalong= OrderOpenPrice( );

ticket2=OrderSend(Symbol(),OP_BUYLIMIT,Lots_2ingresso,entratalong-Point*Secentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,1,0,Magenta); // NULL, c'e il null in + //

ticket3=OrderSend(Symbol(),OP_BUYLIMIT,Lots_3ingresso,entratalong-Point*Terzentrata-2*Point,3,entratalong-Point*StopLoss-2*Point,entratalong+TakeProfit*Point,NULL,2,0,Magenta); // buono dei test //

[/CODE]

Here the trailign stop, it don't work the trail 1 e trail 2 with at the same time i control the ticket!!!

[CODE]

int TrailStop ()

{

int cnt,result,total=OrdersTotal();

double gain2=Lots_2ingresso;

double gain3=Lots_2ingresso;

int ticket,ticket2,ticket3;

for(cnt = total-1; cnt >= 0; cnt--)

{

RefreshRates();

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if ((OrderSymbol() == Symbol()) && (OrderProfit() > 0.00))

{

if (OrderType()==OP_BUY && OrderTicket()==ticket )

{

if(Bid - OrderOpenPrice() > Point * TrailingStop )

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

for(cnt = total-1; cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderType()!=OP_SELL && OrderType()!=OP_BUY) //&& trail==1 && OrdersTotal() > 1 )

result =OrderDelete(OrderTicket());

}

Alert("sta facendo trail");

}

}

}

// trailing 2 parte X pip dopo

if (OrderType()==OP_BUY && OrderTicket()==ticket2)

{

if(Bid - OrderOpenPrice() > Point * Trailing2)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}

// trailing 3 parte X pip dopo

if (OrderType()==OP_BUY )

{

if(Bid - OrderOpenPrice() > Point * Trailing3)

{

if(OrderStopLoss() < Bid - Point * TrailingStop)

{

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

}

}

}// fine trailing

 

Пожалуйста, измените этот код EMA

Это отличный код от: Coders Guru. Не мог бы кто-нибудь изменить его для меня. Мне нужно, чтобы он только ЗАКРЫВАЛ открытые сделки. Я создал систему, которая говорит мне, когда открывать сделки, и не хочу сидеть за компьютером весь день.

чтобы закрывать сделки. Спасибо, команда.

 

Измените код, пожалуйста

Calvon:
Это отличный код от: Coders Guru. Не мог бы кто-нибудь изменить его для меня. Мне нужно, чтобы он только ЗАКРЫВАЛ открытые сделки. Я создал систему, которая говорит мне, когда открывать сделки, и не хочу сидеть за компьютером весь день, чтобы закрывать сделки. Спасибо, команда.

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

//| EMA_6_12.mq4 |

//| Coders Guru |

//| Forex TSD| Индикаторы и советники Metatrader |

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

#property copyright "Coders Guru"

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

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

#include

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

extern double TrailingStop = 40;

extern double TakeProfit = 1000; //любое большое число

extern double Lots = 1;

extern int Slippage = 5;

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

extern int CurrentBar = 1;

extern bool UseClose = true;

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

extern int MaMode = 1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */

extern int ShortEma = 4;

extern int LongEma = 8;

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

int MagicNumber = 123430;

string ExpertComment = "EMA_4_8";

bool LimitPairs = false;

bool LimitFrame = false;

int TimeFrame = 60;

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

bool Optimize = false;

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 Crossed()

{

double EmaLongPrevious = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaLongCurrent = iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar);

double EmaShortPrevious = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1);

double EmaShortCurrent = iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar);

if (EmaShortPreviousEmaLongCurrent ) return (1); // восходящий тренд

if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent<EmaLongCurrent ) return (2); //тренд вниз

return (0); //другое место

}

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

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);}

}

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

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

if (Crossed() == 1 )

BuyCondition = false;

if (Crossed() == 2 )

SellCondition = false;

if (Crossed ()== 1)

CloseBuyCondition = true;

if (Crossed ()== 1)

CloseSellCondition = true;

total = OrdersTotal();

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

{

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

{

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

CheckError(ticket, "BUY");

return(0);

}

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

{

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

CheckError(ticket, "SELL");

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);

}

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

int OpenOrder(int type)

{

int ticket=0;

int err=0;

int c = 0;

if(type==OP_BUY)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit*Point,ExpertComment,MagicNumber,0,Green);

err=GetLastError();

if(err==0)

{

break;

}

else

{

if(err==4 || err==137 ||err==146 || err==136) //Занятые ошибки

{

Sleep(5000);

continue;

}

else //нормальная ошибка

{

break;

}

}

}

}

if(type==OP_SELL)

{

for(c = 0 ; c < NumberOfTries ; c++)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,Bid-TakeProfit*Point,ExpertComment,MagicNumber,0,Red);

err=GetLastError();

if(err==0)

{

break;

}

else

{

if(err==4 || err==137 ||err==146 || err==136) //Занятые ошибки

{

Sleep(5000);

continue;

}

else //нормальная ошибка

{

break;

}

}

}

}

return(ticket);

}

bool CloseOrder(int type)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

return (OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet));

if(type==OP_SELL)

return (OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Violet));

}

}

void TrailOrder(int type)

{

if(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

}

}

}

}

}

}

void CheckError(int ticket, string Type)

{

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type + " ордер открыт : ",OrderOpenPrice());

}

else Print("Ошибка при открытии " + Type + " ордера : ", ErrorDescription(GetLastError()));

}

bool AllowedPair(string pair)

{

bool result=false;

for (int n = 0 ; n < ArraySize(LP); n++)

{

if(Symbol() == LP[n])

{

result = true;

}

}

return (result);

}

 
Причина обращения: