Discussione sull’articolo "Gli Swap (Parte I): Posizioni di Blocco e Sintetiche" - pagina 2 12 Nuovo commento Firas Taji 2024.05.01 12:46 #11 Ciao, Ho eseguito l'esperto sia su MT4 che su MT5, quando c'è un PostFix l'esperto non viene eseguito e non ottiene alcun risultato. puoi scoprire il motivo o risolvere il problema? Grazie mille Busta 2.11 Aiuto per la codifica Auguri per MQL5 Yutaka Okamoto 2024.05.09 01:52 #12 void FillPairsArray()// riempire l'array con le informazioni richieste sugli strumenti { int iterator=0; double correction; int TempSwapMode; for ( int i=0; i<ArraySize(Pairs); i++ )// azzeramento dei simboli { Pairs[iterator].Name=""; } for ( int i=0; i<SymbolsTotal(false); i++ )// controllare i simboli dalla finestra di MarketWatch { TempSwapMode=int(SymbolInfoInteger(Pairs[iterator].Name,SYMBOL_SWAP_MODE)); if ( StringLen(SymbolName(i,false)) == 6+PrefixE+PostfixE && IsValid(SymbolName(i,false)) && SymbolInfoInteger(SymbolName(i,false),SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_FULL && ( ( TempSwapMode == 1 ) || ( ( TempSwapMode == 5 || TempSwapMode == 6 ) && CorrectedValue(Pairs[iterator].Name,correction) )) ) { if ( iterator >= ArraySize(Pairs) ) break; Pairs[iterator].Name=SymbolName(i,false); Pairs[iterator].TickSize=SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_TRADE_TICK_SIZE); Pairs[iterator].PointX=SymbolInfoDouble(Pairs[iterator].Name, SYMBOL_POINT); Pairs[iterator].ContractSize=SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_TRADE_CONTRACT_SIZE); switch(TempSwapMode) { case 1:// in punti Pairs[iterator].SwapBuy=SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_SWAP_LONG)*Pairs[iterator].TickValue*(Pairs[iterator].PointX/Pairs[iterator].TickSize); Pairs[iterator].SwapSell=SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_SWAP_SHORT)*Pairs[iterator].TickValue*(Pairs[iterator].PointX/Pairs[iterator].TickSize); break; case 5:// in percentuale Pairs[iterator].SwapBuy=correction*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_SWAP_LONG)*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_BID)*Pairs[iterator].ContractSize/(360.0*100.0); Pairs[iterator].SwapSell=correction*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_SWAP_SHORT)*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_BID)*Pairs[iterator].ContractSize/(360.0*100.0); break; case 6:// in percentuale Pairs[iterator].SwapBuy=correction*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_SWAP_LONG)*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_BID)*Pairs[iterator].ContractSize/(360.0*100.0); Pairs[iterator].SwapSell=correction*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_SWAP_SHORT)*SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_BID)*Pairs[iterator].ContractSize/(360.0*100.0); break; } Pairs[iterator].Margin=SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_MARGIN_INITIAL); Pairs[iterator].TickValue=SymbolInfoDouble(Pairs[iterator].Name,SYMBOL_TRADE_TICK_VALUE); // <= questo iterator++; } } } Salve, Ho una domanda sul metodo FillPairsArray(). Nel metodo FillPairsArray(), il valore di SYMBOL_TRADE_TICK_VALUE non è impostato su Pairs[iterator].TickValue prima del calcolo dello SWAP? Sembra essere impostato dopo il calcolo dello SWAP. Grazie. 12 Nuovo commento
Ciao,
Ho eseguito l'esperto sia su MT4 che su MT5, quando c'è un PostFix l'esperto non viene eseguito e non ottiene alcun risultato.
puoi scoprire il motivo o risolvere il problema?
Grazie mille