[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 217

 
DanLett:

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

I consulenti possono fare trading?
 
DanLett:

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


Non sono un esperto, forse c'è un problema?

ОrderSelect(i,SELECT_BY_POS,MODE_TRADES)
è stato sostituito da MODE_TRADES?
 

Cosa c'è che non va nella mia matematica?

int modOrder()
{
double currentPrice = Bid;
double currentStoploss = OrderStopLoss();
double profitLine=profitLine();
if (currentPrice >= profitLine)
  {
  OrderModify(getTicket(),0,currentStoploss+1*Point,0,0,Blue);
  }
  Alert("profit line ", profitLine);
  return (0);
}

Il mio currentPrice >= profitLine significa che se profitLine == o >, giusto?

Ma funziona per me se > di almeno un punto.

 
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.
 
olis: Cosa c'è che non va nella mia matematica?
Hai guardatole FAQ?
 

Sì, beh... non ci ha pensato. Grazie.
 
Gek34:

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.

 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) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?

 
Top2n:

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...