Se vedi tutto strano devi riaggiornare la cache del tuo browser. premendo CTRL + F5. E' dovuto all'aggiornamento del forum.

Script apertura basket

Gli script di MT4, quei programmi che poi terminano ....
Avatar utente
sanford
Messaggi: 149
Iscritto il: ven mag 25, 2018 11:46 pm

Script apertura basket

Messaggio da sanford »

Come spesso faccio, quando ho l'esigenza di testare alcune idee relative al trading con il basket, mi avvalgo di un vecchio script che modifico di volta in volta a seconda delle esigenze ma, dato che non so programmare, le mie modifiche si limitano ad aggiungere o togliere strumenti al basket e a decidere la direzione BUY o SELL degli stessi :oops:

Ebbene, questa volta qualcosa è andato storto, ma non so davvero cosa; ho modificato lo script per far aprire un basket di 14 strumenti, 7 SHORT e 7 LONG, ma quando lo attacco al grafico non succede nulla, quindi c'è di sicuro qualche errore nel codice, che allego qui di seguito:

Codice: Seleziona tutto

//+------------------------------------------------------------------+
//|                                               Basket_14_SELL.mq4 |
//|                                                                            |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""


//+------------------------------------------------------------------+
//| STANDARD FUNCTIONS                                               |
//+------------------------------------------------------------------+


//--- program start function ----------------------------------------|

int start()
{
 double  Lotti = 0.01;
 int     AUDUSD = OP_SELL;
 int     NZDJPY = OP_SELL;
 int     GBPCHF = OP_SELL;
 int     EURUSD = OP_SELL;
 int     EURCHF = OP_SELL;
 int     CHFJPY = OP_SELL;
 int     USDJPY = OP_SELL;
 int     USDCHF = OP_BUY;
 int     EURGBP = OP_BUY;
 int     NZDUSD = OP_BUY;
 int     GBPUSD = OP_BUY;
 int     EURJPY = OP_BUY;
 int     AUDJPY = OP_BUY;
 int     GBPJPY = OP_BUY;

 int MODE_AUDUSD;
 int MODE_NZDJPY;
 int MODE_GBPCHF;
 int MODE_EURUSD;
 int MODE_EURCHF;
 int MODE_CHFJPY;
 int MODE_USDJPY;
 int MODE_USDCHF;
 int MODE_EURGBP;
 int MODE_NZDUSD;
 int MODE_GBPUSD;
 int MODE_EURJPY;
 int MODE_AUDJPY;
 int MODE_GBPJPY;
 
  
 if(AUDUSD == OP_SELL)
  MODE_AUDUSD = MODE_ASK;
 else
  MODE_AUDUSD = MODE_BID;
  
 if(NZDJPY == OP_SELL)
  MODE_NZDJPY = MODE_ASK;
 else
  MODE_NZDJPY = MODE_BID;
  
 if(GBPCHF == OP_SELL)
  MODE_GBPCHF = MODE_ASK;
 else
  MODE_GBPCHF = MODE_BID;
  
 if(EURUSD == OP_SELL)
  MODE_EURUSD = MODE_ASK;
 else
  MODE_EURUSD = MODE_BID;

 if(EURCHF == OP_SELL)
  MODE_EURCHF = MODE_ASK;
 else
  MODE_EURCHF = MODE_BID;

 if(CHFJPY == OP_SELL)
  MODE_CHFJPY = MODE_ASK;
 else
  MODE_CHFJPY = MODE_BID;

 if(USDJPY == OP_SELL)
  MODE_USDJPY = MODE_ASK;
 else
  MODE_USDJPY = MODE_BID;

 if(USDCHF == OP_BUY)
  MODE_USDCHF = MODE_ASK;
 else
  MODE_USDCHF = MODE_BID;
  
 if(EURGBP == OP_BUY)
  MODE_EURGBP = MODE_ASK;
 else
  MODE_EURGBP = MODE_BID;
  
 if(NZDUSD == OP_BUY)
  MODE_NZDUSD = MODE_ASK;
 else
  MODE_NZDUSD = MODE_BID;
  
 if(GBPUSD == OP_BUY)
  MODE_GBPUSD = MODE_ASK;
 else
  MODE_GBPUSD = MODE_BID;

 if(EURJPY == OP_BUY)
  MODE_EURJPY = MODE_ASK;
 else
  MODE_EURJPY = MODE_BID;

 if(AUDJPY == OP_BUY)
  MODE_AUDJPY = MODE_ASK;
 else
  MODE_AUDJPY = MODE_BID;

 if(GBPJPY == OP_BUY)
  MODE_GBPJPY = MODE_ASK;
 else
  MODE_GBPJPY = MODE_BID;
  

 int Opened = -1;
                                                     
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("AUDUSD", AUDUSD, Lotti, MarketInfo("AUDUSD", MODE_AUDUSD), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);
    
 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("NZDJPY", NZDJPY, Lotti, MarketInfo("NZDJPY", MODE_NZDJPY), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);
    
 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("GBPCHF", GBPCHF, Lotti, MarketInfo("GBPCHF", MODE_GBPCHF), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);
 
 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("EURUSD", EURUSD, Lotti, MarketInfo("EURUSD", MODE_EURUSD), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("EURCHF", EURCHF, Lotti, MarketInfo("EURCHF", MODE_EURCHF), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("CHFJPY", CHFJPY, Lotti, MarketInfo("CHFJPY", MODE_CHFJPY), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("USDJPY", USDJPY, Lotti, MarketInfo("USDJPY", MODE_USDJPY), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);


 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("USDCHF", USDCHF, Lotti, MarketInfo("USDCHF", MODE_USDCHF), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);
    
 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("EURGBP", EURGBP, Lotti, MarketInfo("EURGBP", MODE_EURGBP), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);
    
 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("NZDUSD", NZDUSD, Lotti, MarketInfo("NZDUSD", MODE_NZDUSD), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);
 
 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("GBPUSD", GBPUSD, Lotti, MarketInfo("GBPUSD", MODE_GBPUSD), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("EURJPY", EURJPY, Lotti, MarketInfo("EURJPY", MODE_EURJPY), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("AUDJPY", AUDJPY, Lotti, MarketInfo("AUDJPY", MODE_AUDJPY), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 Opened = -1;
 
 while(Opened == -1)                                     
  if((IsTradeAllowed() == true) && (IsTradeContextBusy() == false))
    Opened = OrderSend("GBPJPY", GBPJPY, Lotti, MarketInfo("GBPJPY", MODE_GBPJPY), 3, 0, 0, "Basket_14_SELL", 0, 0, Blue);

 return(0);
}

//+------------------------------------------------------------------+

Magari si tratta solo di una svista o di qualche virgola fuori posto, fatto sta che lo script non apre nulla e ne avrei bisogno per fare dei test in demo; a dire il vero mi piacerebbe trasformarlo in uno script con il pannello delle variabili, che mi permetta di cambiare il lotto senza doverlo editare ogni volta, e che mi permetta anche di avere, per esempio, una ventina di variabili in cui inserire gli strumenti BUY e un'altra ventina in cui inserire gli strumenti SELL, in modo da poter testare vari tipi di basket fino a 40 strumenti in contemporanea, così lo script avrebbe la massima versatilità possibile. Infine, se a tutto questo si aggiungesse anche la variabile "stoppa tutto a X percentuale o a X soldi", sarebbe la ciliegina sulla torta :mrgreen:

Comunque, spero di non abusare della pazienza e disponibilità di Carlo o di chiunque abbia voglia di dare una spulciata al codice per capire dov'è l'inghippo...già riuscire a far funzionare quello che ho postato, sarebbe di grande aiuto. Grazie :)
Avatar utente
positiveday
Amministratore
Messaggi: 1907
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Script apertura basket

Messaggio da positiveday »

A parte la programazione che definirei raccapricciante non vedo motivi per cui non debba funzionare.
Verifica di tradare su un conto senza suffisso e col trading abilitato che accetti microlotti.
:mrgreen:
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...
Avatar utente
sanford
Messaggi: 149
Iscritto il: ven mag 25, 2018 11:46 pm

Re: Script apertura basket

Messaggio da sanford »

Già verificate entrambe le condizioni prima di scrivere il post; con ALT-V (la hotkey che gli ho assegnato) non succede nulla, trascinandolo sul grafico non succede nulla, ovviamente gli expert sono abilitati nelle opzioni, non so davvero cosa pensare :?

Se hai un demo da esperimenti, potresti verificare che funzioni? Così almeno so che il problema è nella mia MT4 e non nello script :(
Avatar utente
positiveday
Amministratore
Messaggi: 1907
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Script apertura basket

Messaggio da positiveday »

Si, ho verificato e funziona.
Ricompilalo, è comunque una questione di "ambiente" non di programma.
:D
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...
Avatar utente
positiveday
Amministratore
Messaggi: 1907
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Script apertura basket

Messaggio da positiveday »

Ecco le trades.
basket.PNG
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...
Avatar utente
sanford
Messaggi: 149
Iscritto il: ven mag 25, 2018 11:46 pm

Re: Script apertura basket

Messaggio da sanford »

Forse l'inghippo è dovuto al fatto che non l'ho ricompilato, adesso ci provo :oops:
Avatar utente
sanford
Messaggi: 149
Iscritto il: ven mag 25, 2018 11:46 pm

Re: Script apertura basket

Messaggio da sanford »

Niente da fare, nemmeno dopo la ricompilazione, apri e chiudi la MT4, elimina tutti i grafici e riparti da uno nuovo, lo script funziona...ho aperto un microlotto in manuale su eurodollaro e l'ha preso subito, a questo punto mi viene il seguente dubbio: il server metaquotes mi sta mandando pochissima banda, 70/0 per la precisione...che sia questo il vero problema? :?
Avatar utente
positiveday
Amministratore
Messaggi: 1907
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Script apertura basket

Messaggio da positiveday »

Potrebbe essere disabilitato il trading automatico sul conto, hai letto il log della piattaforma e degli ea?
:D
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...
Avatar utente
sanford
Messaggi: 149
Iscritto il: ven mag 25, 2018 11:46 pm

Re: Script apertura basket

Messaggio da sanford »

I consiglieri esperti sono abilitati, il pulsante verde premuto, quando faccio ALT-V sul diario non compare nulla, nel senso che non indica nemmeno il caricamento dello script...in che cartella trovo eventuali log con i messaggi di errore? :cry:

Ecco, adesso ho provato a caricare lo script con "tasto destro --> esegui sul grafico" e sul diario compare la relativa voce, ma non apre nulla :cry:


Script.jpg
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Avatar utente
positiveday
Amministratore
Messaggi: 1907
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Script apertura basket

Messaggio da positiveday »

Ho aggiunto qualche messaggio di diagnostica all'avvio.
Prova questo allegato.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...
Rispondi