Hai letto la documentazione?
Parameters
ticket
[indice dell'ordine o biglietto dell'ordine a seconda del secondo parametro.
select
[in] Bandiere di selezione. Può essere uno qualsiasi dei seguenti valori:
SELECT_BY_POS - indice nel pool di ordini,
SELECT_BY_TICKET - l'indice è il biglietto dell'ordine.
pool=MODE_TRADES
[in] Indice del pool di ordini opzionale. Usato quando il parametro selezionato è SELECT_BY_POS. Può essere uno dei seguenti valori:
MODE_TRADES (default) - ordine selezionato dal pool di trading (ordini aperti e in sospeso),
MODE_HISTORY - ordine selezionato dal pool storico (ordine chiuso e cancellato).
bool OrderSelect( int index, // index or order ticket int select, // flag int pool=MODE_TRADES // mode );
boopa26 vuole chiudere gli ordini aperti quindi boopa sceglie MODE_TRADES come terzo parametro
boopa26 fa SELECT_BY_POS o SELECT_BY_TICKET ? boopa26 non lo sa
SELECT_BY_POS //index inside order pool, SELECT_BY_TICKET //index is order ticket.
https://docs.mql4.com/trading/orderclose
come fa boopa26 senza cicli for o while cycles ma con condizioni if per chiudere gli ordini aperti con la funzione order select?
documentazione la chiusura dell'ordine richiede la ricerca del ticket dell'ordine ma boopa26 fa order select per trovare la posizione dell'ordine non il ticket
bool OrderClose( int ticket, // ticket double lots, // volume double price, // close price int slippage, // slippage color arrow_color // color );
1. selezionare l'ordine
2. chiudere l'ordine
non sa come
//+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright 2005-2014, MetaQuotes Software Corp. | //| http://www.mql4.com | //+------------------------------------------------------------------+ #property copyright "2005-2014, MetaQuotes Software Corp." #property link "http://www.mql4.com" #property description "Moving Average sample expert advisor" #define MAGICMA 20131111 //--- Inputs input double Lots =0.1; input double MaximumRisk =0.02; input double DecreaseFactor=3; input int MovingPeriod =12; input int MovingShift =6; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //--- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //--- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //--- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //--- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //--- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //--- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double ma; int res; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- sell conditions if(Open[1]>ma && Close[1]<ma) { res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); return; } //--- buy conditions if(Open[1]<ma && Close[1]>ma) { res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); return; } //--- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //--- check order type if(OrderType()==OP_BUY) { if(Open[1]>ma && Close[1]<ma) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White)) Print("OrderClose error ",GetLastError()); } break; } if(OrderType()==OP_SELL) { if(Open[1]<ma && Close[1]>ma) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White)) Print("OrderClose error ",GetLastError()); } break; } } //--- } //+------------------------------------------------------------------+ //| OnTick function | //+------------------------------------------------------------------+ void OnTick() { //--- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //--- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //--- } //+------------------------------------------------------------------+media mobile expert advisor usa per il ciclo per chiudere gli ordini aperti
Penso che "boopa26" abbia bisogno di fare quanto segue:
- Per prima cosa, "boopa26" deve prima imparare le basi della codifica (come in C).
- Poi "boopa26" deve leggere e seguire il Libro/Tutorial (anche se è vecchio e non aggiornato).
- Allo stesso tempo, "boopa26" deve leggere l'intera documentazione con particolare attenzione agli aggiornamenti MQL4 che non sono menzionati nel Libro/Tutorial.
- Poi "boopa26" ha bisogno di studiare diversi esempi di codice per Indicatori, Expert Advisors (EAs) e Scripts nella base di codice utente.
- Poi "boopa26" può iniziare a creare i propri indicatori, ma molto semplici, e lentamente costruire su di essi fino a quando non sarà in grado di capire e creare indicatori più complessi.
- Poi "boopa26" può iniziare a creare i suoi EAs, ma molto semplici, e lentamente costruirli fino a quando non sarà in grado di capire e creare EAs più complessi.
"boopa26" deve anche imparare una lezione molto importante, che "boopa26" non dovrebbe saltare tutti i passi necessari, perché altrimenti "boopa26" sarà solo sprecare il tempo di tutti, e invece di una "bella torta", tutto "boopa26" avrà solo "carbone bruciato".
Penso che "boopa26" abbia bisogno di fare quanto segue:
- Per prima cosa, "boopa26" deve prima imparare le basi della codifica (come in C).
- Poi "boopa26" deve leggere e seguire il Libro/Tutorial (anche se è vecchio e non aggiornato).
- Allo stesso tempo, "boopa26" deve leggere l'intera documentazione con particolare attenzione agli aggiornamenti MQL4 che non sono menzionati nel Libro/Tutorial.
- Poi "boopa26" ha bisogno di studiare diversi esempi di codice per Indicatori, Expert Advisors (EAs) e Scripts nella base di codice utente.
- Poi "boopa26" può iniziare a creare i propri indicatori, ma molto semplici, e lentamente costruire su di essi fino a quando non sarà in grado di capire e creare indicatori più complessi.
- Poi "boopa26" può iniziare a creare i suoi, ma molto semplici EAs e lentamente costruire su di essi fino a quando non sarà completamente in grado di capire e fare EAs più complessi.
"boopa26" deve anche imparare una lezione molto importante, che "boopa26" non deve saltare tutti i passi necessari, perché altrimenti "boopa26" farà solo perdere tempo a tutti, e invece di una "bella torta", tutto quello che avrà sarà "carbone bruciato".
1. non ha bisogno di conoscenze di c. mql4 è funzioni diverse
2. ha già letto il libro
3. ha già letto la documentazione
4. codice già scritto
5. ?
6. ?
boopa26 non fa perdere tempo alla gente
Insegnante FMIC che insegna a boopa26 a cucinare torte al carbone
Classe di torta al carbone FMIC
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
boopa26 può scrivere il codice di invio degli ordini ma non può scrivere la funzione order select per chiudere gli ordini. vuole scrivere la funzione order select per chiudere gli ordini senza cicli for o while. boopa26 vuole scrivere la funzione order select per chiudere gli ordini con condizioni if ma boopa26 non capisce come assemblare la funzione order select per chiudere gli ordini
esempio ordine di acquisto inviato
if(OrdersTotal()==0)OrderSend(Symbol(),OP_BUY,.1,Ask,3,0,0,NULL,9,0,clrNONE);
esempio di ordine select. boopa26 non capisce
OrderSelect(int index,int select,int pool)
cos'è int index?
cos'è int select?
cos'è int pool?
come fa order select?