создали же огромную ветку специально... Любой вопрос новичка, чтоб не захламлять форум
что ж все норовят важные тему в задницу засунуть... P.S. код вставляется через кнопку source, иначе вряд ли кто читать будет... :-)))
//+------------------------------------------------------------------+ //| sobstvennyi_probnyi_sovetnic.mq4 | //| Antonico | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Antonico" #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ double lot=1; extern double sl=30; extern double tp=30; extern double koeff=2; int pon=1; int vtor=0; int sred=3; int hetver=0; int patn=0; extern string TStop="Trailing Stop"; extern bool TSProfitOnly = True; // Переключатель зоны, в которой трал начинает свою работу. Если True, то трал начнёт работу только после того, как профит позиции достигнет значения TStop.Buy/Sell+TrailingStep пунктов. Если False, то советник будет просто следить за тем, чтобы стоп позиции относительно текущей цены всегда был не далее, чем TStop.Buy/Sell+TrailingStep пунктов. Другими словами при True советник работает только в профитной зоне позиции, а при False и в отрицательной. extern int TStop.Buy = 250; // Размер трала в пунктах для покупок. extern int TStop.Sell = 250; // Размер трала в пунктах для продаж. extern int TrailingStep = 250; // Шаг трала в пунктах. Необходим для того, чтобы не мучить дилера частыми запросами. extern int NumberOfTry = 5; // Количество попыток модификации ордера int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int otkrord=OrdersTotal(); if (DayOfWeek()==pon || DayOfWeek()==vtor || DayOfWeek()==sred || DayOfWeek()==hetver || DayOfWeek()==patn || DayOfWeek()==6 || DayOfWeek()==0 || otkrord >0) return(0); if(OrdersHistoryTotal()==0) {lot=1;} if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)) { if (OrderProfit()>0) { lot=1; } if (OrderProfit()<=0) { lot=OrderLots()*koeff; // Умножить на 2 } } int h=TimeHour(TimeCurrent()); int m=TimeMinute(TimeCurrent()); int s=TimeSeconds(TimeCurrent()); double zena0= Open[3]; double zena01=Open[2]; if (h==1 && m==00 && s==01 && zena0<zena01 ) {OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);} if (h==1 && m==00 && s==01 && zena0>zena01) {OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red); } {if(OrdersHistoryTotal()==0) {lot=1;} if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)) { if (OrderProfit()>0) { lot=1; } if (OrderProfit()<=0) { lot=OrderLots()*koeff; // Умножить на 2 после убыточной сделки } } double zena1= Open[5]; double zena11=Open[4]; if (h==3 && m==00 && s==01 && zena1>zena11) { OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);} if (h==14 && m==00 && s==01 && zena1<zena11) {OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red); } } {// трейлинг открытых ордеров с любым магиком SimpleTrailing(); } return(0); } //+------------------------------------------------------------------+ //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 11.09.2008 | //| Описание : Сопровождение позиций простым тралом | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ( "" - любой символ, | //| NULL - текущий символ) | //| op - операция ( -1 - любая позиция) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void SimpleTrailing(string sy="", int op=-1, int mn=-1) { double po, pp; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { po=MarketInfo(OrderSymbol(), MODE_POINT); if (mn<0 || OrderMagicNumber()==mn) { if (OrderType()==OP_BUY) { pp=MarketInfo(OrderSymbol(), MODE_BID); if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) { if (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po) { ModifyOrder(-1, pp-TStop.Buy*po, -1); } } } if (OrderType()==OP_SELL) { pp=MarketInfo(OrderSymbol(), MODE_ASK); if (!TSProfitOnly || OrderOpenPrice()-pp>TStop.Sell*po) { if (OrderStopLoss()>pp+(TStop.Sell+TrailingStep-1)*po || OrderStopLoss()==0) { ModifyOrder(-1, pp+TStop.Sell*po, -1); } } } } } } } } //End //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 28.11.2006 | //| Описание : Модификация одного предварительно выбранного ордера. | //+----------------------------------------------------------------------------+ //| Параметры: | //| pp - цена установки ордера | //| sl - ценовой уровень стопа | //| tp - ценовой уровень тейка | //| cl - цвет значка модификации | //+----------------------------------------------------------------------------+ void ModifyOrder(double pp=-1, double sl=0, double tp=0, color cl=CLR_NONE) { bool fm; double op, pa, pb, os, ot; int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it; if (pp<=0) pp=OrderOpenPrice(); if (sl<0 ) sl=OrderStopLoss(); if (tp<0 ) tp=OrderTakeProfit(); pp=NormalizeDouble(pp, dg); sl=NormalizeDouble(sl, dg); tp=NormalizeDouble(tp, dg); op=NormalizeDouble(OrderOpenPrice() , dg); os=NormalizeDouble(OrderStopLoss() , dg); ot=NormalizeDouble(OrderTakeProfit(), dg); if (pp!=op || sl!=os || tp!=ot) { for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break; while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); fm=OrderModify(OrderTicket(), pp, sl, tp, 0, cl); if (fm) { // if (UseSound) PlaySound(NameFileSound); break; } else { er=GetLastError(); pa=MarketInfo(OrderSymbol(), MODE_ASK); pb=MarketInfo(OrderSymbol(), MODE_BID); // Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it); // Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(), // " op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp); // Sleep(1000*10); } } } } //EndПопробуйте так
Спасибос!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
перерыл интернет, кое - что нашел, но сколько не пробывал не получается и все!!! помогите дописать трейлинг стоп)) работать должен так - если цена поднимается/опускается (в прибыль) на "Х" пунктов срабатывает трейлинг стоп на "У" пунктов от этой цены и движется по профиту с шагом "Z" . Огромное спасибо тому кто поможет))))))
//+------------------------------------------------------------------+
//| sobstvennyi_probnyi_sovetnic.mq4 |
//| Antonico |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Antonico"
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
double lot=1;
extern double sl=30;
extern double tp=30;
extern double koeff=2;
int pon=1;
int vtor=0;
int sred=3;
int hetver=0;
int patn=0;
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{ int otkrord=OrdersTotal();
if (DayOfWeek()==pon || DayOfWeek()==vtor || DayOfWeek()==sred || DayOfWeek()==hetver || DayOfWeek()==patn || DayOfWeek()==6 || DayOfWeek()==0 || otkrord >0) return(0);
if(OrdersHistoryTotal()==0)
{lot=1;}
if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit()>0)
{
lot=1;
}
if (OrderProfit()<=0)
{
lot=OrderLots()*koeff; // Умножить на 2
}
}
int h=TimeHour(TimeCurrent());
int m=TimeMinute(TimeCurrent());
int s=TimeSeconds(TimeCurrent());
double zena0= Open[3];
double zena01=Open[2];
if (h==1 && m==00 && s==01 && zena0<zena01 )
{OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);}
if (h==1 && m==00 && s==01 && zena0>zena01)
{OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red);
}
{if(OrdersHistoryTotal()==0)
{lot=1;}
if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if (OrderProfit()>0)
{
lot=1;
}
if (OrderProfit()<=0)
{
lot=OrderLots()*koeff; // Умножить на 2 после убыточной сделки
}
}
double zena1= Open[5];
double zena11=Open[4];
if (h==3 && m==00 && s==01 && zena1>zena11)
{
OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);}
if (h==14 && m==00 && s==01 && zena1<zena11)
{OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red);
}
}
return(0);
}
//+------------------------------------------------------------------+