Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 204

 

Ciao a tutti.

Ho una domanda. Ho scritto un EA su Martin. Quando modifico gli ordini e imposto il TakeProfit, vola in cielo. E questo succede solo sul conto reale. Nello Strategy Tester tutto è OK, e tutto è OK nella demo. Non capisco quale sia il trucco.

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

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

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

if(OrderSelect(i,SELECT_BY_POS))

se(OrderSymbol()==Symbol())

se(OrderMagicNumber()==Magico)

{

if(OrderType()==OP_BUY)

{

BuyPrice+=OrderOpenPrice()*OrderLots();

BuyLot+=OrderLots();

}

se (OrderType()==OP_SELL)

{

SellPrice+=OrderOpenPrice()*OrderLots();

SellLot+=OrderLots();

}

}

se(b>1&&BuyLot>0)

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

se(s>1&&SellLot>0)

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

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

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

if(OrderSelect(i,SELECT_BY_POS))

se(OrderSymbol()==Symbol())

se(OrderMagicNumber()==Magico)

{

if(OrderType()==OP_BUY)

{

se(b==1)

{ if(OrderTakeProfit()==0)

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

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

se (b>1)

if(OrderTakeProfit()!=BuyAverange)

se(Ask<BuyAverange)

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

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

}

se (OrderType()==OP_SELL)

{

se(s==1)

se(OrderTakeProfit()==0)

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

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

se (s>1)

if(OrderTakeProfit()!=SellAverange)

se(Bid>SellAverange)

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

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

}

}

 

Colleghi - ho deciso di scrivere qui perché non so dove altro andare. Si prega di correggere - in MT 4 - quando si salva un profilo di default - default - quando si eseguono più robot su più schede - in generale questo tema da sotto eurobucks, poundbucks, ecc. - Quando si riavvia il terminale - è confuso e quando si carica il profilo di default - è anche confuso - questo è MOLTO scomodo, devo sistemare manualmente la sequenza - cosa viene dopo cosa, ecc.


Si può aggiustare?

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

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

Buona giornata!

Perché il grafico in mt4 è diverso da quello in mt5? E se possibile, come faccio a trasferire il grafico di mt5 su mt4? (Solo il mio broker usa i dati di prezzo come in mt5, ma tutti i miei indicatori preferiti sono in mt4)

 

Potete dirmi perché il servizio postale non funziona?


 
Vitaly Muzichenko:

Potete dirmi perché l'invio alla posta non funziona?


Forse da chi e a chi dovrebbe essere diverso?

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

Forse da chi e a chi dovrebbe essere diverso?

Sì, l'ho già provato, non funziona niente.

 
Vitaly Muzichenko:

Ho già provato, non funziona.

Tutti i mailers ora richiedono di generare una password separata per un'applicazione di terze parti. Leggi l'aiuto del tuo mailer - molto probabilmente devi generare una password separata.


Inoltre è necessario specificare la porta esatta del server SMTP, in questo modo:

smtp.ukr.net:465
 
Vladimir Karputov:

Tutti i mailers ora richiedono di generare una password separata per un'applicazione di terze parti. Leggi la guida del tuo provider di posta elettronica - probabilmente dovrai generare una password separata.

Inoltre è necessario specificare la porta esatta del server SMTP, in questo modo:

Tak-zhe ha provato - non è andato.

La porta è stata prescritta: smtp.ukr.net:465


 
Funziona anche con qualcuno dei postini?
Motivazione: