Confrontare i numeri reali (doppi) a un'uguaglianza rigorosa non è la cosa migliore da fare con loro. È più corretto confrontare la loro differenza con il valore massimo consentito.
Cari esperti, la domanda sull'indicatore è stata rimossa, la soluzione è arrivata abbastanza inaspettatamente, ho duplicato i calcoli, e oops.... Tutto funziona.
Ma ne ho un altro, come funzionava, vorrei capire. Il codice è allegato:
//---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int i,n;
Ritirato. Ho inventato ogni tipo di assurdità. Si è rivelato molto più semplice. Ho tolto la variabile Stark dalla funzione start, in modo che non si resettasse ad ogni tick.
Ma cosa succede quando questo ACQUISTO non viene chiuso, e si apre il prossimo ACQUISTO, ecc.
Questo SELLSTOP che viene impostato per primo deve essere in qualche modo capito per chiuderlo dopo che il primo BUY è stato chiuso.
Inoltre, se il prezzo sfonda quello pendente e poi chiude senza perdite, quello pendente è stato fissato nello stesso posto del suo predecessore.
-----------------------------------
questonon risolverà il problema perché dopo che la vendita è chiusa, si aprirà una nuova vendita con un master diverso e sarà cancellata.
Dopo aver chiuso l'acquisto non so come.
int i, k=OrdersTotal(),ti;
for (i=0; i<k; i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderType()== OP_SELLSTOP){
ti = OrderMagicNumber(); }
if(OrderType()== OP_BUY)
if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?
Il segnale "sig1"è dato , il comando BUY è attivato e l'ordine pendente SELLSTOP è posizionato sotto l'ordine BUY.
Quando la posizione BUY viene chiusa, anche il SELLSTOP viene cancellato.
Ma cosa succede quando questo ACQUISTO non viene chiuso, e si apre il prossimo ACQUISTO, ecc.
Questo SELLSTOP che viene impostato per primo deve essere in qualche modo capito per chiuderlo dopo che il primo BUY è stato chiuso.
Inoltre, se il prezzo sfonda quello pendente e poi chiude senza perdite, quello pendente è stato fissato nello stesso posto del suo predecessore.
-----------------------------------
questonon risolverà il problema perché dopo che la vendita è chiusa, si aprirà una nuova vendita con un master diverso e sarà cancellata.
dopo che l'acquisto è chiuso, non so come.
Bene... si usa lo stesso Select per controllare...
int i, k=OrdersTotal(), ti, tid;
for (i=0; i<k; i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()== OP_SELLSTOP) {
tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
ti = OrderMagicNumber();
// ищем ордер по тикету
if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
// проверяем Закрылся ли этот ордер - это твоя Байка
if (OrderCloseTime() > 0) {
// удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
OrderDelete(tid);
}
}
}
}
}
ti stanno venendo un sacco di idee... credetemi che state facendo stronzate... non perdere il tuo tempo... la tua martingala non funziona così facilmente...
Si prega di consigliare cosa fare se:
Nel tester funziona bene, tutto secondo i piani, ma sul realsk non si apre la transazione.
P.S. Ho davvero bisogno di aiuto, è una questione di vita o di morte
Si prega di consigliare cosa fare se:
Nel tester funziona bene, tutto secondo i piani, ma sul realsk non si apre la transazione.
P.S. Ho davvero bisogno di aiuto, è una questione di vita o di morte
è stato sostituito da MODE_TRADES?Non sono un esperto, forse c'è un problema?
Cosa c'è che non va nella mia matematica?
Il mio currentPrice >= profitLine significa che se profitLine == o >, giusto?
Ma funziona per me se > di almeno un punto.
Hai guardato le FAQ?
Sì, beh... non ci ha pensato. Grazie.
Cari esperti, la domanda sull'indicatore è stata rimossa, la soluzione è arrivata abbastanza inaspettatamente, ho duplicato i calcoli, e oops.... Tutto funziona.
Ma ne ho un altro, come funzionava, vorrei capire. Il codice è allegato:
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;
double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);
SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;
//----
i=Bars-counted_bars-1;
while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);
//----
i--;
}
return(0);
}
Ritirato. Ho inventato ogni tipo di assurdità. Si è rivelato molto più semplice. Ho tolto la variabile Stark dalla funzione start, in modo che non si resettasse ad ogni tick.
Il segnale "sig1"è dato , il comando BUY è attivato e l'ordine pendente SELLSTOP è posizionato sotto l'ordine BUY.
Quando la posizione BUY viene chiusa, anche il SELLSTOP viene cancellato.
Ma cosa succede quando questo ACQUISTO non viene chiuso, e si apre il prossimo ACQUISTO, ecc.
Questo SELLSTOP che viene impostato per primo deve essere in qualche modo capito per chiuderlo dopo che il primo BUY è stato chiuso.
Inoltre, se il prezzo sfonda quello pendente e poi chiude senza perdite, quello pendente è stato fissato nello stesso posto del suo predecessore.
-----------------------------------
questonon risolverà il problema perché dopo che la vendita è chiusa, si aprirà una nuova vendita con un master diverso e sarà cancellata.
Dopo aver chiuso l'acquisto non so come.
Il segnale "sig1"è dato , il comando BUY è attivato e l'ordine pendente SELLSTOP è posizionato sotto l'ordine BUY.
Quando la posizione BUY viene chiusa, anche il SELLSTOP viene cancellato.
Ma cosa succede quando questo ACQUISTO non viene chiuso, e si apre il prossimo ACQUISTO, ecc.
Questo SELLSTOP che viene impostato per primo deve essere in qualche modo capito per chiuderlo dopo che il primo BUY è stato chiuso.
Inoltre, se il prezzo sfonda quello pendente e poi chiude senza perdite, quello pendente è stato fissato nello stesso posto del suo predecessore.
-----------------------------------
questonon risolverà il problema perché dopo che la vendita è chiusa, si aprirà una nuova vendita con un master diverso e sarà cancellata.
dopo che l'acquisto è chiuso, non so come.
Bene... si usa lo stesso Select per controllare...