ssn1: Sono abituato al mio sistema di archiviazione.
Sono già sopravvissuto tranquillamente con il Keeper: la distruzione del disco rigido del mio PC, il fallimento del mio portatile. E non ho perso un solo byte del mio codice. Il Vault è conveniente.
Ho scritto un programma di esercizi. Non funziona per qualche motivo.
L'ho testato nello strategy tester tra il 29 settembre e il 15 ottobre.
Il programma dovrebbe funzionare così: faccio un acquisto. Quando il prezzo scende di 0,010 dovrebbe vendere con una perdita.
Si verifica un acquisto. Non c'è nessuna vendita. Inizio la visualizzazione e vedo che il prezzo non è solo 0,010 più basso, ma molto più alto. Strano.
// -------- variabili --- Iniziare ----- extern double L1=0.01; // dimensione del lotto per l'acquisto extern double L1n=0.01; // dimensione del lotto per l'acquisto (lotto normalizzato) extern double AktualAsk=0.0; // prezzo di offerta corrente extern double AktualBid=0.0; // prezzo di vendita effettivo extern int int ticketlackmus=1; // indicatore di apertura dell'ordine con successo. extern int int ticket1=0; // biglietto extern bool PozOtk1=true; // -------- variabili --- Fine ----- int init() { ritorno(0); }
int start() { se (PozOtk1==true) { //posizione aperta ticketlackmus=1; mentre (ticketlackmus>0) { Avviso (" Aprire la prima posizione "); RefreshRates();// Aggiorna i dati AktualAsk=NormalizeDouble(Ask,Digits); //per il prezzo L1n=NormalizeDouble(L1,2); //per il lotto. ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE); se (ticket1>0) ticketlackmus=-1; { Alert (" ORDER OPEN ", ticket1, ", ticketlackmus); } } PozOtk1=falso; Alert (" PozOtk1 ", PozOtk1); }
RefreshRates();// RefreshRates() AktualBid=NormalizeDouble(Bid,Digits); //per il prezzo if (AktualBid<=AktualAsk-0.010 && PozOtk1==false) { RefreshRates(); // Aggiorna i dati OrderSelect(ticket1, SELECT_BY_TICKET;) L1n=NormalizeDouble(L1,2); //per il lotto OrderClose (ticket1, L1n, AktualBid, 5); PozOtk1=true; }
Se una posizione è aperta su un certo simbolo (in questo caso - "GBPUSD"), allora è consigliabile prendere tutti i dati su questo simbolo attraverso marketinfo, cioè non soloAktualAsk=NormalizeDouble(Ask,Digits ); aktualAsk=MarketInfo("GBPUSD",MODE_ASK);
E così qualsiasi dato di mercato dovrebbe essere preso, al fine di evitare.
// -------- переменные --- Н -----externdouble L1=0.01; // размер лота для покупки externdouble L1n=0.01; // размер лота для покупки externdouble AktualAsk=0.0;
externdouble AktualBid=0.0;
externint ticketlackmus=1; // "лакмусовая бумажка" успешности откарытия ордераexternint ticket1=0; // тикет externbool PozOtk1=true;
// -------- переменные --- К ----- int init()
{
return(0);
}
int start()
{
if (PozOtk1==true)
{
// Открытие позиции
ticketlackmus=1;
while (ticketlackmus>0)
{
Alert (" Открытие первой позиции ");
RefreshRates(); // Обновление данных //AktualAsk=NormalizeDouble(Ask,Digits); //для цены
AktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
L1n=NormalizeDouble(L1,2); //для лота.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);
if (ticket1>0) ticketlackmus=-1;
{
Alert (" ОРДЕР ОТКРЫТ ", ticket1, " ", ticketlackmus);
}
}
PozOtk1=false;
Alert (" PozOtk1 ", PozOtk1);
}
RefreshRates(); // Обновление данных
AktualBid=NormalizeDouble(Bid,Digits); //для ценыif (AktualBid>=AktualAsk+0.010 && PozOtk1==false)
{
RefreshRates(); // Обновление данных OrderSelect(ticket1, SELECT_BY_TICKET);
L1n=NormalizeDouble(L1,2); //для лота
OrderClose (ticket1, L1n, AktualBid, 5);
PozOtk1=true;
}
return(0);
}
int deinit()
{
return(0);
}
evillive:
Se si apre una posizione su un simbolo specifico (in questo caso - "GBPUSD"), allora è auspicabile prendere tutti i dati anche su questo simbolo tramite marketinfo, cioè non soloAktualAsk=NormalizeDouble(Ask,Digits);aktualAsk=MarketInfo("GBPUSD",MODE_ASK);
E così qualsiasi dato di mercato dovrebbe essere preso, per evitare.
Grazie, Evillive!
Ho fatto dei cambiamenti. Ma ho già iniziato a comprare. Nessuna vendita dopo le modifiche. M15 test dal 30 settembre 2014 a metà ottobre.
Sono abituato al mio sistema di archiviazione.
Buon pomeriggio.
Ho scritto un programma di esercizi. Non funziona per qualche motivo.
L'ho testato nello strategy tester tra il 29 settembre e il 15 ottobre.
Il programma dovrebbe funzionare così: faccio un acquisto. Quando il prezzo scende di 0,010 dovrebbe vendere con una perdita.
Si verifica un acquisto. Non c'è nessuna vendita. Inizio la visualizzazione e vedo che il prezzo non è solo 0,010 più basso, ma molto più alto. Strano.
// -------- variabili --- Iniziare -----
extern double L1=0.01; // dimensione del lotto per l'acquisto
extern double L1n=0.01; // dimensione del lotto per l'acquisto (lotto normalizzato)
extern double AktualAsk=0.0; // prezzo di offerta corrente
extern double AktualBid=0.0; // prezzo di vendita effettivo
extern int int ticketlackmus=1; // indicatore di apertura dell'ordine con successo.
extern int int ticket1=0; // biglietto
extern bool PozOtk1=true;
// -------- variabili --- Fine -----
int init()
{
ritorno(0);
}
int start()
{
se (PozOtk1==true)
{
//posizione aperta
ticketlackmus=1;
mentre (ticketlackmus>0)
{
Avviso (" Aprire la prima posizione ");
RefreshRates();// Aggiorna i dati
AktualAsk=NormalizeDouble(Ask,Digits); //per il prezzo
L1n=NormalizeDouble(L1,2); //per il lotto.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);
se (ticket1>0) ticketlackmus=-1;
{
Alert (" ORDER OPEN ", ticket1, ", ticketlackmus);
}
}
PozOtk1=falso;
Alert (" PozOtk1 ", PozOtk1);
}
RefreshRates();// RefreshRates()
AktualBid=NormalizeDouble(Bid,Digits); //per il prezzo
if (AktualBid<=AktualAsk-0.010 && PozOtk1==false)
{
RefreshRates(); // Aggiorna i dati
OrderSelect(ticket1, SELECT_BY_TICKET;)
L1n=NormalizeDouble(L1,2); //per il lotto
OrderClose (ticket1, L1n, AktualBid, 5);
PozOtk1=true;
}
ritorno(0);
}
int deinit()
{
ritorno(0);
}
Ozero.
Si prega di utilizzare il pulsante magico SRC quando si inserisce il codice:
Inserire correttamente il codice nel forum
Se una posizione è aperta su un certo simbolo (in questo caso - "GBPUSD"), allora è consigliabile prendere tutti i dati su questo simbolo attraverso marketinfo, cioè non solo AktualAsk=NormalizeDouble(Ask,Digits ); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
E così qualsiasi dato di mercato dovrebbe essere preso, al fine di evitare.
Se si apre una posizione su un simbolo specifico (in questo caso - "GBPUSD"), allora è auspicabile prendere tutti i dati anche su questo simbolo tramite marketinfo, cioè non solo AktualAsk=NormalizeDouble(Ask,Digits); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
E così qualsiasi dato di mercato dovrebbe essere preso, per evitare.
Grazie, Evillive!
Ho fatto dei cambiamenti. Ma ho già iniziato a comprare. Nessuna vendita dopo le modifiche. M15 test dal 30 settembre 2014 a metà ottobre.
Grazie, Evillive!
Fatto il cambiamento. Ma l'acquisto andava avanti lo stesso. Dopo le modifiche, non c'è vendita. M15 test dal 30 settembre 2014 a metà ottobre.
OrderClose (ticket1, L1n, AktualBid, 5);