Per favore, aiutatemi a trovare un EA (script) che metta una griglia di ordini pendenti virtuali con parametri specificati, o apra ordini (uno per uno) in una direzione specificata con un take specificato.
SELL_STOP - gli ordini sono calcolati, ma SELL non lo vuole. Secondo l'algoritmo, se non ce ne sono, l'ordine SELL_STOP viene piazzato, e se ce n'è almeno uno, l'ordine non viene piazzato.
SELL_STOP - gli ordini vengono contati, ma SELL non vuole. Secondo l'algoritmo, se non ce ne sono, viene piazzato l'ordine SELL_STOP, e se ce n'è almeno uno, non viene piazzato nessun ordine.
//+------------------------------------------------------------------+//| Script 1.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//---#include <Trade\PositionInfo.mqh>
#include <Trade\OrderInfo.mqh>
//---CPositionInfo m_position; // object of CPositionInfo classCOrderInfo m_order; // object of COrderInfo class//---//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
int count_buys = 0.0;
int count_sells = 0.0;
int count_buy_limits = 0.0;
int count_sell_limits = 0.0;
int count_buy_stops = 0.0;
int count_sell_stops = 0.0;
//---for(int i=PositionsTotal()-1; i>=0; i--)
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
{
if(m_position.PositionType()==POSITION_TYPE_BUY)
count_buys++;
elseif(m_position.PositionType()==POSITION_TYPE_SELL)
count_sells++;
}
//---for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current ordersif(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its properties
{
if(m_order.OrderType()==ORDER_TYPE_BUY_LIMIT)
count_buy_limits++;
elseif(m_order.OrderType()==ORDER_TYPE_SELL_LIMIT)
count_sell_limits++;
elseif(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
count_buy_stops++;
elseif(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
count_sell_stops++;
}
//--- you code
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
Non capisco a cosa serva il parametro begin nella seconda variante della funzione onCalculate. Ogni volta che la funzione onCalculate viene chiamata, è uguale a 0. Stavo emettendo il valore di begin tramite la funzione print. Il libro di riferimento dice che l'inizio è "da dove partono i dati significativi". Questo non mi dice nulla.
MisterRight: Non capisco a cosa serva il parametro begin nella seconda variante della funzione onCalculate. Ogni volta che la funzione onCalculate viene chiamata, è uguale a 0. Ho fatto l'output del valore iniziale tramite la funzione print. Il libro di riferimento dice che iniziare è "da dove partono i dati significativi". Questo non mi dice nulla.
Controlla i codici degli indicatori aperti di Example.
Come faccio a capire il tipo di conto in modo programmatico? Copertura o rete?
O come questo
m_label_info[3].Description(m_account.MarginModeDescription());\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Per favore, ditemi dove si trova l'errore:
SELL_STOP - gli ordini sono calcolati, ma SELL non lo vuole. Secondo l'algoritmo, se non ce ne sono, l'ordine SELL_STOP viene piazzato, e se ce n'è almeno uno, l'ordine non viene piazzato.Per favore, ditemi dove si trova l'errore:
SELL_STOP - gli ordini vengono contati, ma SELL non vuole. Secondo l'algoritmo, se non ce ne sono, viene piazzato l'ordine SELL_STOP, e se ce n'è almeno uno, non viene piazzato nessun ordine.Non confondere l'ORDINE LOCALE con la POSIZIONE.
Non confondete l'ORDINE REMOTO con la POSIZIONE.
Ogni volta che la funzione onCalculate viene chiamata, è uguale a 0.
Stavo emettendo il valore di begin tramite la funzione print.
Il libro di riferimento dice che l'inizio è "da dove partono i dati significativi". Questo non mi dice nulla.
Non capisco a cosa serva il parametro begin nella seconda variante della funzione onCalculate.
Ogni volta che la funzione onCalculate viene chiamata, è uguale a 0.
Ho fatto l'output del valore iniziale tramite la funzione print.
Il libro di riferimento dice che iniziare è "da dove partono i dati significativi". Questo non mi dice nulla.
Controlla i codici degli indicatori aperti di Example.
Guardate i codici degli indicatori aperti dell'esempio.
Ho guardato. Inizia sempre = 0.
Qui, ho estratto un pezzo di codice dall'indicatore AMA
se(inizio!=0)
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,ExtPeriodAMA+begin);
E cosa dovrebbe dirmi questo codice se la condizione begin!=0 non è mai vera?
Alla fine dà delle sciocchezze, molto più degli ordini chiusi.