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

 
Dimka-novitsek:

Buona sera! Sono perplesso. Ho due ordini aperti nel tester, uno con takeprofit, l'altro senza.

Prendono entrambi il profitto in una volta sola!!!!

Ho passato questo posto otto volte nel tester. Non riesco a capirlo!


Sembra un doppio clone! Provatelo su Demo! Ce ne parli più tardi!

Quindi guarda, dove è scattato lo SL, la perdita, e dove il TP, il profitto. Proprio così!

Controllare cosa dice il registro? Quindi, passo dopo passo traccia tutte le azioni!

Solo nel tester passano i doppi! Sulla demo, inoltre, sul Real sarà 1, e il secondo non passerà, ci saranno un sacco di errori!

 
hoz:
La domanda è questa. Se voglio piazzare un ordine pendente limite che scatterà esattamente all'apertura della barra del giorno, cioè la barra su TF D1. Come dovrei implementarlo? Non capisco davvero la logica. Dopo tutto, non ho bisogno di mettere un semplice Limiter, ma un Limiter che funzionerà esattamente in un certo momento, cioè all'apertura di una nuova barra del giorno.
Prima di tutto, decidete con la terminologia - "Limite che si innescherà esattamente in un certo momento" - cosa significa "Limite trigger"? E più spiegate questo processo magico - più facile sarà implementarlo nella vita reale. Per sicurezza, leggete gli ordini pendenti.
 
Dimka-novitsek:

Buona sera! Sono perplesso. Ho due ordini aperti nel tester, uno con takeprofit, l'altro senza.

Prendono entrambi il profitto in una volta sola!!!!

Ho passato questo posto otto volte nel tester. Non riesco a capire!

Forse puoi condividere un segreto - "Perché creare un clone di un ordine aperto? Non si può aprire UN ordine con un lotto più grande? ;)
 
È una strategia. Potrei fare uno screenshot ora. C'è mio fratello maggiore, non faccio in tempo. È una situazione strana, però.
 
è corretto confrontare i formati datetime in questo modo?
datetime t=OrderCloseTime();
             datetime t1=Time[1];
             datetime t0=Time[0];
             if(t1>=t&&t<t0){
               p++;
             }
 
Dimka-novitsek:
Questa è una strategia. Potrei fare uno screenshot ora. C'è mio fratello maggiore, non faccio in tempo. È una situazione strana.

Quando Diman, sarà in grado di usare una CAMPAGNA PERSONALE)?

Hai fatto dei soldi in un anno nel mondo reale? È come gli importi START assegnati a voi, vero?).

 
TarasBY:
Prima di tutto, definite la terminologia - "il limite che scatterà esattamente in un certo momento" - cosa significa "il limite scatterà"? E più dettagli date su questo processo magico - più facile sarà implementarlo nella vita reale.


Sì, mi sono espresso male. Cioè, fondamentalmente. Se è chiaro qui, il pendolo è messo solo sul prezzo.

Ecco il codice:

//+------------------------------------------------------------------+
//|                                                       2 Days.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

extern string    A1 = "Объем сделки. Если i_lots = 0, то считается в процентах";
extern double    i_lots = 0.1;
extern string    A2 = "Управление рисками";
extern double    i_sl = 15,
                 i_tp = 10;
extern int  slippage,
            price_b,
            price_a;

extern string    Z1 = "=== Прочие настройки ===";
extern string    i_openOrderSound = "ok.wav";
extern int       i_magicNumber = 400021;

double firstBarClosed,
       secondBarClosed;
 
// Идентификаторы типов сигналов
#define SIGNAL_BUY              1                     // Сигнал на покупку
#define SIGNAL_SELL            -1                     // Сигнал на продажу
#define SIGNAL_NO               0                     // Нет сигнала

#include <stderror.mqh>

int init()
{
   
   return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
   return(0);
}
//+------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
//FindOrders()
//+-------------------------------------------------------------------------------------+
//| Получение рыночных данных                                                           |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
  price_b = MarketInfo(Symbol(),MODE_BID);
  price_a = MarketInfo(Symbol(),MODE_ASK);
}
//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade(int signal, double& priceForBuy, double& priceForSell)
{
 // FindOrders();
  priceForBuy = NormalizeDouble(priceForBuy,Digits);
  priceForSell = NormalizeDouble(priceForSell,Digits);
  
  if(!IsTesting())
     GetMarketInfo();
     
  if (signal == SIGNAL_BUY)
     if (!OrderSend(Symbol(),OP_BUYLIMIT, i_lots,priceForBuy,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  if (signal == SIGNAL_SELL)
     if (!OrderSend(Symbol(),OP_SELLLIMIT,i_lots,priceForSell,slippage,i_sl,i_tp,"",i_magicNumber,3))
     return(false);
     
  return(true);
}
//+-------------------------------------------------------------------------------------+
//| Получение цены входа в покупку или в продажу                                        |
//+-------------------------------------------------------------------------------------+
double GetPriceToInput()
{
  firstBarClosed = iClose(Symbol(),1440,2);
  secondBarClosed = iClose(Symbol(),1440,1);
    
  {
    double deltaForSell = (firstBarClosed - secondBarClosed)/2;
    double priceForSell = secondBarClosed - deltaForSell;
    
    return(priceForSell);
  }  

  {
    double deltaForBuy = (secondBarClosed - firstBarClosed)/2;
    double priceForBuy = secondBarClosed + deltaForBuy;  
    return(priceForBuy);
  }
}
//+-------------------------------------------------------------------------------------+
//| Генерация сигнала закрытия, покупки или продажи                                     |
//+-------------------------------------------------------------------------------------+
int GetSignal()
{
  if(firstBarClosed > secondBarClosed)
  return(SIGNAL_BUY);

  if(firstBarClosed < secondBarClosed)
  return(SIGNAL_NO);
}
//+-------------------------------------------------------------------------------------+
//| Функция Start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
  int signal = GetSignal();
    
    if (signal != SIGNAL_NO)
      if(!Trade(signal, priceForBuy, priceForSell))
      return(0);

  return(0);
}


La questione, infatti, non è molto complicata. Ho passatoparametri formali priceForBuy e priceForSell nella funzione Trade(int signal, double& priceForBuy, double& priceForSell). I parametri sono passati dai link. Non si fa così? Le funzioni sono locali, non globali.

Si è verificato un errore durante la compilazione:

'priceForBuy' - variable not defined    E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 25)
'priceForSell' - variable not defined   E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (117, 38)

Da dove viene l'errore? Ho già definito questi parametri nella funzioneGetPriceToInput().

 
A cosa serve il pretzel & after double (onestamente non lo so)?
 
YOUNGA:
e a cosa serve il pretzel & after double (onestamente non lo so)?

È un'ossessione di voler passare parametri per riferimento. :-)

 
Roman.:

È un'ossessione di voler passare parametri per riferimento. :-)



Come altro? La stessa cosa per calcolare 100 volte?
Motivazione: