Jump to content
muvingman

Напишу советник, скрипт, индикатор на MQL бесплатно

Recommended Posts

Sapsan_071
Posted (edited)

Пытаюсь написать советник. Но последний блок никак не хочет работать. Смысл блока в том, что при достижении выше или ниже определенного уровня, необходимо всем открытым ордерам (как Buy, так и Sell) выставить Stoploss и с определенным шагом тралить все ордера одновременно. Помогите пожалуйста. Где я не прав. С уважением!

Скрытый текст



      if ( LineUp_2 < Bid )
         {
         SPRD = NormalizeDouble(Ask - Bid, Digits);
         for ( i = 1 ; i < OrdersTotal(); i++ )
            {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
               Alert ("Выбран ордер № ", i);
               {
               if (OrderSymbol()==Symbol())
                  {
                  tip = OrderType();
                  OOP = NormalizeDouble (OrderOpenPrice(), Digits);
                  if ( tip == OP_BUY )
                     {
                     b++;
                     TicketB = OrderTicket();
                     if ( NormalizeDouble(Bid - LineUp_2, Digits) > NormalizeDouble(Trail, Digits))
                        {
                        SL = NormalizeDouble( Bid - Trail, Digits);
                        if (OrderModify(TicketB,OrderOpenPrice(), SL, 0, DarkOrange))
                        Comment("StopLoss успешно установлен =", SL);
                        }
                     }
                  if ( tip == OP_SELL )
                     {
                     s++;
                     TicketS = OrderTicket();
                     if ( NormalizeDouble(Ask + SPRD - LineUp_2, Digits) > NormalizeDouble(Trail + SPRD, Digits))
                        {
                        SL = NormalizeDouble( Ask - Trail - SPRD, Digits);
                        if (OrderModify(TicketB,OrderOpenPrice(), SL, 0, DarkOrange))
                        Comment("StopLoss успешно установлен =", SL);
                        }
                     }
                  }
               }
            }
         }
      if ( LineDn_2 > Ask )
         {
         SPRD = NormalizeDouble(Ask - Bid, Digits);
         for ( i = 1 ; i < OrdersTotal(); i++ )
            {
            if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
               Alert ("Выбран ордер № ", i);
               {
               if (OrderSymbol()==Symbol())
                  {
                  tip = OrderType();
                  OOP = NormalizeDouble (OrderOpenPrice(), Digits);
                  if ( tip == OP_BUY )
                     {
                     b++;
                     TicketB = OrderTicket();
                     if ( NormalizeDouble(LineDn_2 + SPRD - Bid, Digits) > NormalizeDouble(Trail + SPRD, Digits))
                        {
                        SL = NormalizeDouble( Bid + Trail + SPRD, Digits);
                        if (OrderModify(TicketB,OrderOpenPrice(), SL, 0, DarkOrange))
                        Comment("StopLoss успешно установлен =", SL);
                        }
                     }
                  if ( tip == OP_SELL )
                     {
                     s++;
                     TicketS = OrderTicket();
                     if ( NormalizeDouble(LineDn_2 - Ask, Digits) > NormalizeDouble(Trail , Digits))
                        {
                        SL = NormalizeDouble( Ask + Trail, Digits);
                        if (OrderModify(TicketB,OrderOpenPrice(), SL, 0, DarkOrange))
                        Comment("StopLoss успешно установлен =", SL);
                        }
                     }
                  }
               }
            }
         }


 

 

Edited by AntFX
п. 16

Share this post


Link to post
Share on other sites
Sapsan_071

Или хотя бы подскажите где можно посмотреть пример этого кода.

Share this post


Link to post
Share on other sites
Ulantrade

Всем Здравия.

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites
БорисMQL4
В 24.08.2018 в 22:30, Sapsan_071 сказал:

Или хотя бы подскажите где можно посмотреть пример этого кода.

Пример кода.
 

void TrStop(int Magic_r)
{
int i,StopLevel,Spread;
double sl_r;
bool res;

for(i=0; i<OrdersTotal(); i++)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
      if(OrderMagicNumber()!=Magic_r || OrderSymbol()!=Symbol()) continue;
      
      RefreshRates();
      
      StopLevel=(int)MarketInfo(Symbol(),MODE_STOPLEVEL);
      Spread=(int)MarketInfo(Symbol(),MODE_SPREAD);
      
      //----------------
      Error_4_count=0;
      Error_129_count=0;
      Error_135_count=0;
      Error_136_count=0;
      Error_137_count=0;
      Error_138_count=0;
      Error_146_count=0;
      //----------------
      
      if(OrderType()==OP_BUY)
         {
         if(Bid>=OrderOpenPrice()+Trail_Start*Point && (OrderStopLoss()<Bid-(Trail_Stop+Trail_Step)*Point || OrderStopLoss()==0) && Bid-Trail_Stop*Point>OrderOpenPrice())
            {
            sl_r=Bid-Trail_Stop*Point;
            sl_r=NormalizeDouble(sl_r,Digits);
            if(Bid-sl_r<MathMax(StopLevel,Spread*2)*Point || sl_r==NormalizeDouble(OrderStopLoss(),Digits)) continue;
            
            if(Comments_g) CommentsPrint("Comment","Приказ отправляется...",10,"Arial",clrDodgerBlue);
            
            while(true)
               {
               res=OrderModify(OrderTicket(),OrderOpenPrice(),sl_r,OrderTakeProfit(),0);
               if(res)
                  {
                  if(Comments_g) CommentsPrint("Comment","Приказ успешно исполнен.",10,"Arial",clrDodgerBlue);
                  if(Sounds_g) PlaySound("expert.wav");
                  break;
                  }
               if(Fun_Error(GetLastError())==1) continue;
               break;
               }
            }
         continue;
         }
      if(OrderType()==OP_SELL)
         {
         if(Ask<=OrderOpenPrice()-Trail_Start*Point && (OrderStopLoss()>Ask+(Trail_Stop+Trail_Step)*Point || OrderStopLoss()==0) && Ask+Trail_Stop*Point<OrderOpenPrice())
            {
            sl_r=Ask+Trail_Stop*Point;
            sl_r=NormalizeDouble(sl_r,Digits);
            if(sl_r-Ask<MathMax(StopLevel,Spread*2)*Point || sl_r==NormalizeDouble(OrderStopLoss(),Digits)) continue;
            
            if(Comments_g) CommentsPrint("Comment","Приказ отправляется...",10,"Arial",clrDodgerBlue);
            
            while(true)
               {
               res=OrderModify(OrderTicket(),OrderOpenPrice(),sl_r,OrderTakeProfit(),0);
               if(res)
                  {
                  if(Comments_g) CommentsPrint("Comment","Приказ успешно исполнен.",10,"Arial",clrDodgerBlue);
                  if(Sounds_g) PlaySound("expert.wav");
                  break;
                  }
               if(Fun_Error(GetLastError())==1) continue;
               break;
               }
            }
         }
      }
   }
}

 


Пишу на заказ - советники, индикаторы, скрипты и другое ПО для терминала MetaTrader 4.

 

mt4soft.ru

 

Share this post


Link to post
Share on other sites
Cenmax

Приветствую!

Подскажите,есть ли скрипт,который вешаешь на график и при закрытии одного ордера закрывает все остальные

Edited by Cenmax

"Зло растет и увеличивается, если вы прячетесь от него или делаете вид, что не замечаете.."

Share this post


Link to post
Share on other sites
AntFX
1 минуту назад, Cenmax сказал:

Приветствую!

Подскажите,есть ли скрипт,который вешаешь на график и при закрытии одного ордера закрывает все остальные .

Пару постов назад что-то подобное спрашивали


Нужно анализировать не рынок.

Нужно анализировать те способы, которыми мы пытаемся извлекать из него прибыль.

Ветка памма Sciurus. Приватный клуб для активных форумчан

Share this post


Link to post
Share on other sites
Cenmax
1 час назад, AntFX сказал:

Пару постов назад что-то подобное спрашивали

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


"Зло растет и увеличивается, если вы прячетесь от него или делаете вид, что не замечаете.."

Share this post


Link to post
Share on other sites
Fedor Anastas

подскажите кто-нить нашел старую штучку,хочу прогнать посмотреть на истории,одну закономерность, но почему-то советник не работает.Как это не обходимо. Проблема в том что по матрингейлу предусматривается закрытие и возврат всей минусовой серии ,а тут такое впечатление как будто ТП после первой сделки сбивается и уменьшается. Помогите разобраться, что в скрипте не так.Заранее благодарю.

Nevalyashka.mq4

Share this post


Link to post
Share on other sites
БорисMQL4
В 07.09.2018 в 01:41, Cenmax сказал:

Нужно, чтобы скрипт закрыл принудительно все ордера, после того как закроется первый ордер из всех открытых.

Принимайте файл.
Алгоритм реализован в виде советника.
Советник закрывает принудительно все ордера, после того как закроется первый ордер из всех открытых.

e_AutoClose_v1.mq4


Пишу на заказ - советники, индикаторы, скрипты и другое ПО для терминала MetaTrader 4.

 

mt4soft.ru

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×