Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 204

 

Всем привет.  

У меня есть один вопрос. Написал советника на Мартине. В момент модификации ордеров, выставления TakeProfit, он улетает в небеса. Причем это происходит только на реале. В тестере все ок и на демке все ок. Я не понимаю в чем прикол. 

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

double BuyAverange=0, SellAverange=0, SellPrice=0, BuyPrice=0, BuyLot=0,SellLot=0;  

 

 for(int i = OrdersTotal()-1; i>=0; i--)

         if(OrderSelect(i,SELECT_BY_POS))

            if(OrderSymbol()==Symbol())

               if(OrderMagicNumber()==Magic)

               {

               if (OrderType()==OP_BUY)

               {

               BuyPrice+=OrderOpenPrice()*OrderLots();

               BuyLot+=OrderLots();

               }

               if (OrderType()==OP_SELL)

               {

               SellPrice+=OrderOpenPrice()*OrderLots();

               SellLot+=OrderLots();

               }

               

               } 

  if(b>1&&BuyLot>0)

  BuyAverange=NormalizeDouble(BuyPrice/BuyLot+Profit*Point(),Digits()); 

  if(s>1&&SellLot>0)

  SellAverange=NormalizeDouble(SellPrice/SellLot-Profit*Point(),Digits());  

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

 for(int i = OrdersTotal()-1; i>=0; i--)

         if(OrderSelect(i,SELECT_BY_POS))

            if(OrderSymbol()==Symbol())

               if(OrderMagicNumber()==Magic)

               {

               if (OrderType()==OP_BUY)

               {

               if(b==1)

               if(OrderTakeProfit()==0)

               if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+TakeProfit*Point(),Digits()),0,clrGreen)==false)

               Print("Errow N",GetLastError());

               

               if (b>1)

               if(OrderTakeProfit()!=BuyAverange)

               if(Ask<BuyAverange)

               if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(BuyAverange,Digits()),0,clrGreen)==false)

               Print("Errow N",GetLastError());

               

               }

               if (OrderType()==OP_SELL)

               {

               if(s==1)

               if(OrderTakeProfit()==0)

               if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-TakeProfit*Point(),Digits()),0,clrGreen)==false)

               Print("Errow N",GetLastError());

               

               if (s>1)

               if(OrderTakeProfit()!=SellAverange)

               if(Bid>SellAverange)

               if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(SellAverange,Digits()),0,clrGreen)==false)

               Print("Errow N",GetLastError());

               

               }

               

               }   

 

коллеги - решил сюда написать ибо не знаю более куда. Просьба исправить - в МТ 4 - при сохранении одного умолчательного профиля - дефаулт - при работе нескольких роботах на нескольких вкладках - в общем вот эта тема снизу евробакс, фунтбакс и т.д. - при перезапуске терминала - идет в перемешку и при загрузке профиля дефаулт - она также перемешана - это ОЧЕНЬ неудобно, приходится вручную разбирать последовательности - что за чем шло и т.д.


МОЖНО исправить?

 
#property strict
#property copyright "Alex Kolodin"
#property link "www."
#property version "1.00"
#property show_inputs

input color buy =clrGreen;
input color sell =clrCoral;
input int _width=3;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int i,k=OrdersHistoryTotal(), r=-1;
   string sy=Symbol();
   for(i=0; i<k; i++)
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
       if(OrderType()==OP_BUY)
        {
         if(OrderSymbol()==sy)
         {
          TrendCreate(0,"Trendline"+(string)OrderTicket(),0,
                        OrderOpenTime(),
                        OrderOpenPrice(),
                        OrderCloseTime(),
                        OrderClosePrice(),
                        buy,
                        STYLE_SOLID,
                        _width
                        );
        }    
         if(OrderType()==OP_SELL)
              {
               TrendCreate(0,"TrendLine"+(string)OrderTicket(),0,
                        OrderOpenPrice(),
                        OrderOpenTime(),
                        OrderCloseTime(),
                        OrderClosePrice(),
                        sell,            
                        STYLE_SOLID,
                        _width
                        );
              }
          }
         } 
 
 
      }
    }
    
//+------------------------------------------------------------------+
bool TrendCreate(const long chart_ID=0,
const string namename="trendLine",
const int sub_window=0,
datetime time1=0,
double price1=0,
datetime time2=0,

double price2=0,
const color clr=clrRed,
const ENUM_LINE_STYLE style=STYLE_SOLID,
const int width=1,
const bool back=false,
const bool selection=false, 
const bool ray_right=false,
const bool hidden=true,
const long z_order=0)
{

ResetLastError();
 if(!ObjectCreate(chart_ID,namename,OBJ_ARROW,sub_window,time1,price1,time2,price2))
     {
      Print(__FUNCTION__,
            ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
      return(false);
     }
     ObjectSetInteger(chart_ID,namename,OBJPROP_COLOR,clr);
     ObjectSetInteger(chart_ID,namename,OBJPROP_STYLE,style);
     ObjectSetInteger(chart_ID,namename,OBJPROP_WIDTH,width);
     ObjectSetInteger(chart_ID,namename,OBJPROP_BACK,back);
     ObjectSetInteger(chart_ID,namename,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,namename,OBJPROP_SELECTED,selection);
   ObjectSetInteger(chart_ID,namename,OBJPROP_RAY_RIGHT,ray_right);
   ObjectSetInteger(chart_ID,namename,OBJPROP_HIDDEN,hidden);
   ObjectSetInteger(chart_ID,namename,OBJPROP_ZORDER,z_order);
   return(true);

//
     }Здраствуй, читающий уважаемый(АЯ), вот такой код по идее выдаст трендовую линию по двум точкам. Компилируется, а результата нет. Помогите, спасибо.
 

Доброго времени суток! 

 Почему график в mt4 отличается от графика в mt5? И, если возможно, как график mt5 перенести в mt4? (Просто мой брокер использует данные о ценах как в mt5, но все мои любимые индикаторы находятся в mt4)

 

Подскажите, почему не работает отправка на почту?


 
Vitaly Muzichenko:

Подскажите, почему не работает отправка на почту?


Может от кого и кому должны быть разные?

 
Сергей Таболин:

Может от кого и кому должны быть разные?

Да уже пробовал, ничего не помогает.

 
Vitaly Muzichenko:

Да уже пробовал, ничего не помогает.

Сейчас все почтовики требуют генерировать отдельный пароль для стороннего приложения. Прочтите справку вашего почтовика - скорее всего нужно сгенерировать отдельный пароль.


Плюс нужно точно прописать порт SMTP сервера, примерно так:

smtp.ukr.net:465
 
Vladimir Karputov:

Сейчас все почтовики требуют генерировать отдельный пароль для стороннего приложения. Прочтите справку вашего почтовика - скорее всего нужно сгенерировать отдельный пароль.

Плюс нужно точно прописать порт SMTP сервера, примерно так:

Так-же пробовал - не пошло.

Порт прописывал: smtp.ukr.net:465


 
Вообще, оно у кого-то работает хоть с одним почтовиком?
Причина обращения: