[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 567

Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Un'altra domanda da un principiante.
Uso diverse funzioni definite dall'utente nel mio Expert Advisor. Come posso fare in modo che queste funzioni siano combinate in una libreria, e nel corpo dell'Expert Advisor semplicemente chiamarle da lì.
Non ho familiarità con la sintassi della lingua a questo proposito.
Si prega di fare riferimento alla documentazione o alla sezione dei tutorial. Non l'ho trovato lì.
https://book.mql4.com/ru/build/structure
https://www.mql5.com/ru/articles/1462
+ per finire... https://book.mql4.com/ru/appendix/examples
Come scrivere una funzione che controlli se una posizione è o è stata aperta sulla barra zero (preferibilmente una scelta di timeframe. OpenPosLastBar(string sym="", int tf=0, int op=-1, int mn=-1), o questa funzione lo fa. Come ho capito, restituisce solo -1 se la posizione è aperta al momento, ma se è stata aperta e già chiusa.
//+----------------------------------------------------------------------------+
//| Restituisce il numero di barra dell'ultima posizione aperta o -1. |
//| Parametri: |
//| sym - nome dello strumento ("" - simbolo corrente) |
//| tf - timeframe ( 0 - timeframe corrente) |
//| op - operazione (-1 - qualsiasi posizione) |
//| mn - MagicNumber (-1 - qualsiasi magia) |
//+----------------------------------------------------------------------------+
int NumberOfBarLastPos(string sym="", int tf=0, int op=-1, int mn=-1)
{
datetime oot;
int i, k=OrdersTotal();
if(sym=="")
sym=Symbol();
for(i=0; ik; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==sym)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op0 || OrderType()==op)
{
if(mn0 || OrderMagicNumber()==mn)
{
if(ootOrderOpenTime()) oot=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sym, tf, oot, True));
}
//+----------------------------------------------------------------------------+
Нужно два цикла. В первом проходим по истории ордеров, во втором - по текущим ордерам. В обоих случаях если время открытия ордера больше или равно Time[0], то ордер был открыт на текущей свече. Это справедливо для всех таймфреймов.
Grazie per aver cliccato. Potresti chiedere questo nel codice
Спадибо, что аткликнулся. А можно попросить это в коде
Ecco un esempio di un passaggio di storia
Cercate di inventare il vostro codice, tanto più che avete l'algoritmo e un esempio già pronto davanti a voi.
ObjectDelete(a_name_0);
ObjectCreate(a_name_0, OBJ_ARROW, a_window_8, a_datetime_12, a_price_20);
ObjectSet(a_name_0, OBJPROP_ARROWCODE, ai_28);
ObjectSet(a_name_0, OBJPROP_COLOR, a_color_32);
ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_36);
}
void _setabuy(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), Bid + 15.0 * Point, SYMBOL_ARROWUP, Blue, 2);
gi_120++;
}
void _setasell(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), Bid - 15.0 * Point, SYMBOL_ARROWDOWN, Red, 2);
gi_120++;
}
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Grazie. Farò un tentativo.
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Oppure ecco una funzione che controlla se una posizione è stata aperta sulla barra corrente (con un controllo su OrdersTotal() e OrdersHistoryTotal() ). Restituisce true se è stato aperto un ordine di tipo.
Per favore, ditemi come implementare la condizione.
Se (ci sono ordini pendenti) allora fate questo e quello;