Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 492

 
Ihor Herasko:

Vedere la funzione SymbolSelect.

Grazie!

 
Per favore, consigliate come spostare il grafico più a sinistra programmaticamente, grazie!
 

Forum sul trading, sistemi di trading automatico e test di strategia

Qualsiasi domanda per i neofiti su MQL4, aiuto e discussione su algoritmi e codici

labvic, 2018.03.12 14:43

Ciao a tutti, sto affrontando un problema simile:

Apro un trade senza stoploss e takeprofit:

OrderSend("EURUSD",OP_BUY,0.1,Ask,0,0,0,"",Magic,0,Red);

Voglio chiudere questo ordine.

OrderClose(Magic,OrderOpenPrice(),Ask,0,Red);

Ottengo questo errore: OrderClose error 131

Se invece diOrderOpenPrice() punto 0,1 o OrderLots() c'è un errore: OrderClose error 138

Qual è il problema?

A giudicare dalla documentazione, è molto difficile scrivere una chiusura molto più stravagante.

bool  OrderClose(
   int        ticket,      // номер ордера
   double     lots,        // количество лотов
   double     price,       // цена закрытия
   int        slippage,    // максимальное проскальзывание
   color      arrow_color  // цвет
   );
Invece di biglietto scritto magik, invece di volume scritto prezzo aperto. Leggete la documentazione e sentitevi liberi di consultarla più spesso quando scrivete il codice.


 
Nikolay Gaylis:
Per favore consigliate come spostare il grafico ancora di più a sinistra programmaticamente.Grazie!

Ho bisogno di disabilitare l'autoscorrimento e l'offset (proprietà del grafico CHART_AUTOSCROLL e CHART_SHIFT rispettivamente) e poi usare ChartNavigate().

 
Ihor Herasko:

Bisogna disabilitare l'autoscorrimento e l'offset (proprietà del grafico CHART_AUTOSCROLL e CHART_SHIFT rispettivamente) e poi usare ChartNavigate().

Grazie!

 

Saluti a tutti, sono un principiante e sto cercando di creare un EA. Ne ho scritto uno semplice per vedere come avrebbe funzionato. Quando appare un segnale, l'allarme non funziona. Non so quale sia l'errore. Non so quale sia esattamente l'errore.

//+------------------------------------------------------------------+
//|                                             тенк больше кидж.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 double tenkan=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);       //ЗНАЧЕНИЕ ТЕНКАН
 double kijun=iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);         // ЗНАЧЕНИЕ КИДЖУН
 //-------------------------------------------------------------------+
  if(tenkan>kijun)                                               //"ЗОЛОТОЙ КРЕСТ"
  Alert("ЗОЛОТОЙ КРЕСТ");                                       // ОПОВЕЩЕНИЕ
  return;
  }

Cordialmente Andrei.

File:
 
Andrey Ilinykh:

Saluti a tutti, sono un principiante e sto cercando di creare un EA. Ne ho scritto uno semplice per vedere come avrebbe funzionato. Quando appare un segnale, l'allarme non funziona. Non so quale sia l'errore. Non so quale sia esattamente l'errore.

Saluti Andrew.

Funziona, lo controlli nel tester?

 
Nikolay Gaylis:

Funziona! Hai controllato con un tester?

È quello che ho pensato, per qualche motivo.

No, non ho ancora capito il tester.

Ho compilato l'Expert Advisor e lo sto usando su un grafico a minuti. La nuvola cambia colore ma la finestra di avviso non si apre. Potrebbe essere un errore del software?

Grazie!

 
void Laguerr::  deleteOrders()   //  (int otype)
{
   int k = OrdersTotal();
   datetime mDateOrderOp; 
   
   
   for(int i=k-1;i>=0;i--)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
         {
            if(OrderType()== OP_BUYSTOP || OrderType()== OP_SELLSTOP) 
            {
               mDateOrderOp = OrderOpenTime();
               int  mTick = OrderTicket();
               //if (OrderType()== OP_BUYSTOP) mOpType = OP_SELL;
               bool flag= false;
               for(int pos=k-1;pos>=0;pos--)
               {
                  if (OrderSelect(pos,SELECT_BY_POS, MODE_TRADES))
                  {
                     if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
                     {
                        if(OrderOpenTime() == mDateOrderOp && (OrderType()== OP_BUY || OrderType()== OP_SELL)  ) 
                        {
                            flag = true;   
                            break;
                        } 
                     }
                  }
               }
               if (!flag)
               {
                  if (!OrderDelete(mTick))
                  Print("Ошибка delete ордера . Код ошибки=",GetLastError()); 
                  break;
               }
             } 
         }
      }
   }
}
Ciao a tutti, ecco la situazione: apro un ordine con un certo TP e OD. ma OD scatta e un secondo ordine si apre al prezzo OD del primo ordine in direzione opposta (OD è uguale al numero di punti persi sul primo ordine). Nel caso di uno SL secondario, il terzo ordine deve essere aperto nella direzione opposta al secondo ordine con il prezzo uguale al valore dello SL del secondo ordine (cioè il TP corrispondente). Domanda: come fare questa cascata di apertura di questi tre ordini?
 
Potete dirmi se la funzione di chiusura di tutti gli ordini aperti dall'EA sul simbolo è corretta?
void OrderCloseAll(double close_price)
{
   for(int i=OrdersTotal(); i>-1; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) OrderClose(OrderTicket(),lot,close_price,slippage,clrWhite);
      }

}