[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 67

 

Ho aggiunto linee allo script (aggiunto BUYSTOP e SELLSTOP), ma non si compila, dà errori. Puoi dirmi per favore cosa c'è che non va?

#property copyright "Copyright © 2010, Khlystov Vladimir".
#proprietà link "cmillion@narod.ru"
#proprietà show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0, //livello di SL, se 0, SL non è esposto
extern int takeprofit = 0, //t livello TP, se 0, TP non è esposto
extern int Magic = 123456; //numero di un ordine
extern bool BUY = false; //aprire ordine BUY
extern bool SELL = false; //aprire un ordine SELL
extern bool BUYSTOP = false, //aprire ordine BUYSTOP
extern bool SELLSTOP = false, //aprire l'ordine SELLSTOP
extern double Lot = 0.1; // volume dell'ordine
extern int slippage = 3; //la massima deviazione di prezzo permessa per gli ordini a mercato
//--------------------------------------------------------------------
doppio SL,TP;
//--------------------------------------------------------------------
int start()
{
se (COMPRA)
{
se (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Comprare");
}
se (VENDERE)
{
se (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Vendere");
}
se (BUYSTOP)
{
se (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Buy Stop");
}
se (SELLSTOP)
{
se (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Sell Stop");
}
ritorno(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int errore,err;
mentre (vero)
{ error=true;
se (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP, "BUY",Magic,0,Blue);
se (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP, "SELL",Magic,0,Red);
se (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask,Digits),SL,TP, "BUYSTOP",Magic,0,Blue);
se (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid,Digits),SL,TP, "SELLSTOP",Magic,0,Red);
if (error==-1) //fallimento dell'acquisto OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
se (errore || err >10) ritorno;
}
ritorno;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
interruttore ( err )
{
caso 1: ritorno;
caso 2: Alert("Nessuna connessione al server commerciale ",Symbol());ritorno;
caso 3: Alert("Errore parametri errati ",Symbol()); ritorno;
caso 130: Alert("Errore chiusura biglietto si ferma ",Symbol());ritorno;
caso 134: Alert("Non ci sono abbastanza soldi ",Symbol()); ritorno;
caso 146: Alert("Error Trade Subsystem is busy ",Symbol());return;
caso 129: Alert("Errore Prezzo sbagliato ",Simbolo()); ritorno;
caso 131: Alert("Error Incorrect volume ",Symbol());return;
caso 4200:Alert("Errore L'oggetto esiste già ",Symbol());ritorno;
default: Alert("Error ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------

Grazie in anticipo.

 
nemo811:

si può terminare l'operatore con un ";" invece di un ","?

 
FreeLance:

si può terminare l'operatore con un ";" invece di un ","?


Grazie, sto imparando :))) Grazie.
 
nemo811:

Grazie, sto imparando :))) Grazie.

Grazie! Anch'io sono così... ;)
 
FreeLance:

Grazie! Anch'io sono così... ;)

:)))) Domanda ancora più scottante. Questo script apre gli ordini a mercato ma non piazza ordini pendenti. Ho sbagliato di nuovo. Potreste dirmi cosa c'è che non va?
 
nemo811:

:)))) Domanda ancora più pressante. Questo script apre gli ordini a mercato ma non piazza ordini pendenti. Ho sbagliato di nuovo. Puoi dirmi cosa c'è che non va?

Qual è l'idea di trading che c'è dietro?
 
Ho un EA che ignora gli ordini impostati manualmente. Lo script che sto cercando di modificare è progettato per trasformare un ordine "manuale" in un ordine con un parametro magico. Questa è l'idea).
 
nemo811:
Ho un EA che ignora gli ordini aperti impostati "manualmente". Lo script che sto cercando di modificare è progettato per trasformare un ordine "manuale" in un ordine con un parametro magico. Questa è l'idea).


Buona notte!

Non riuscivo a capirlo - così l'ho rimandato.

Ma anche tu - prenditi il tuo tempo - studia la matematica!

Il linguaggio e gli oggetti di manipolazione sono semplici...

L'esecuzione è a volte zoppa?

Quindi c'è lassismo da entrambe le parti.

;)

 

Corretto il codice di cui sopra. I ciondoli non vengono incastonati. Per favore aiutatemi a trovare l'errore.

#property copyright "Copyright © 2010, Khlystov Vladimir"
#proprietà link "cmillion@narod.ru"
#proprietà show_inputs
//--------------------------------------------------------------------
extern int stoploss = 0; //livello di SL, se 0, SL non è esposto
extern int int takeprofit = 0; //t livello TP, se 0, TP non è esposto
extern int int Magic = 123456; //numero di un ordine
extern bool BUY = false; //aprire ordine BUY
extern bool SELL = false; //aprire un ordine SELL
extern bool BUYSTOP = false; //aprire ordine BUYSTOP
extern bool SELLSTOP = false; //aprire l'ordine SELLSTOP
extern double Lot = 0.1; // volume dell'ordine
extern int slippage = 3; //la massima deviazione di prezzo permessa per gli ordini a mercato
extern int DistanceSet = 20; //distanza di mercato
//--------------------------------------------------------------------
doppio SL,TP;
//--------------------------------------------------------------------
int start()
{
se (COMPRA)
{
se (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Comprare");
}
se (VENDERE)
{
se (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Vendere");
}
se (BUYSTOP)
{
se (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Buy Stop");
}
se (SELLSTOP)
{
se (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); altrimenti TP=0;
se (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); altrimenti SL=0;
OPENORDER ("Sell Stop");
}
ritorno(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int errore,err;
mentre (vero)
{ error=true;
se (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
se (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,",Magic,0);
se (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
se (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (error==-1) //fallimento dell'acquisto OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
se (errore || err >10) ritorno;
}
ritorno;
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
interruttore ( err )
{
caso 1: ritorno;
caso 2: Alert("Nessuna connessione al server commerciale ",Symbol());ritorno;
caso 3: Alert("Errore parametri errati ",Symbol()); ritorno;
caso 130: Alert("Errore chiusura biglietto si ferma ",Symbol());ritorno;
caso 134: Alert("Non ci sono abbastanza soldi ",Symbol()); ritorno;
caso 146: Alert("Error Trade Subsystem is busy ",Symbol());return;
caso 129: Alert("Errore Prezzo sbagliato ",Simbolo()); ritorno;
caso 131: Alert("Error Incorrect volume ",Symbol());return;
caso 4200:Alert("Errore L'oggetto esiste già ",Symbol());ritorno;
default: Alert("Error ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------

Grazie.

 
Dimka-novitsek:


No, è proprio il contrario di quello che hai scritto. Certo, grazie per l'attenzione. Ci ho pensato molto, l'ho capito di qua e di là, e ti sbagli.

In realtà, vedo che il problema non è con gli assi e i bit, e non l'ho ancora risolto.

Questa è un'affermazione molto strana da parte sua. Una mela non volerà verso l'alto per la forza dei tuoi pensieri, ma ti cadrà sulla testa...

Le cose stanno così e nient'altro.

O vivete in un paese particolare, dove tutto è rigorosamente al contrario: profitto - valore con un meno? Pensateci: comprate a 1,0100, vendete a 1,0200 (prendete a questo livello, cioè superiore al prezzo di acquisto). Abbiamo un profitto di 100 punti. Non c'è altro modo. Se cercate di impostare la presa al livello di 1.0000, otterrete l'errore 130 - stop sbagliato. Take Buy (OP_BUY) non può essere inferiore al prezzo di apertura. E lo stop - proprio il contrario - deve essere inferiore al prezzo di apertura della posizione Buy. Per vendere è viceversa - Take è inferiore al prezzo aperto, Stop è superiore.

Sembra che tu non abbia solo bisogno di imparare la matematica, ma anche la matematica di primo grado... Senza offesa.