[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 386

 
DhP:

Essayez de cette façon :

Merci. Je vais essayer.
 

Après-midi.

1. Comment exprimer le résultat d'une transaction, c'est-à-dire si elle a été profitable ou déficitaire ? Par exemple, le dernier ?

2. Comment faire une transaction virtuelle et tenir compte de son résultat (signe) ?

 
inoy:

Après-midi.

1. Comment exprimez-vous le résultat de la transaction, c'est-à-dire si elle a été rentable ou non ? Par exemple, le dernier ?

2. Comment effectuer une transaction virtuelle et rendre compte de son résultat (signe) ?

1. Regardez ces 2 fonctions :

isCloseLastPosByStop
isCloseLastPosByTake

2. Il existe un moyen très simple de réaliser un échange virtuel. Augmentez le montant du dépôt de 100 fois, disons qu'au lieu des fameux 1000 livres, prenez 100000. Et les lots d'une position virtuelle se réduisent à la limite - à 0,01, par exemple, avec un lot de travail, tel que 10. 0,01 sur 10 - c'est-à-dire un dixième de un pour cent - des pertes et des profits totalement imperceptibles.

Marque de transaction : isLossLastPos

 
sss2019:

Aidez-moi à résoudre le problème, pourquoi si la boucle n'a que 2 passages, i est d'abord égal à 0 et ensuite immédiatement égal à 4 ?

A partir de ce script, l'alerte sort 0, 4.

Eh bien, peut-être que c'est patamushta :

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderMagicNumber() == MasterMagicNumber)     // а других точно нет?
      {
.............
      Alert(i);
.............
      }
.............
    }

C'est peut-être mieux comme ça :

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    Alert(i);
    if(OrderMagicNumber() == MasterMagicNumber)
      {
      starttime = OrderOpenTime();
      ArrayResize(prices,ArraySize(prices)+TradesCount);
      if(OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES))
      if(OrderMagicNumber() == MasterMagicNumber) endtime = OrderOpenTime();
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      times[i] = starttime;
      times[i+1] = endtime;
      tickets[i] = OrderTicket();
      symbol = OrderSymbol();
      while(g < TradesCount*(i+1))
        {
        if(OrderType() == OP_BUY)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()-LowOpen*Point;
            }else
            {
            prices[g] = prices[g-1]-step*Point;
            }
          }
        if(OrderType() == OP_SELL)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()+HighOpen*Point;
            }else
            {
            prices[g] = prices[g-1]+step*Point;
            }
          }
        g++;
        }
      }
    }
 
DmitriyN:

1. Vérifiez ces 2 fonctions :

isCloseLastPosByStop
isCloseLastPosByTake

2. Pour un commerce virtuel, il existe un moyen très simple. Augmentez le montant de votre dépôt de 100 fois, disons qu'au lieu des fameux 1000 livres, prenez 100000. Et les lots d'une position virtuelle se réduisent à la limite - à 0,01, par exemple, lorsque le lot de travail, par exemple, est de 10. 0,01 sur 10 - c'est-à-dire un dixième de pour cent - des pertes et des gains à peine perceptibles.

Signe de l'affaire : isLossLastPos


Merci. Mais il doit y avoir une option plus élégante pour les entrées virtuelles, sûrement. "Augmenter la taille du dépôt par un facteur de 100 " - j'ai bien peur de ne pas avoir cette option dans la vie réelle)). Pro, ne passez pas à côté !
 
inoy:

Merci. Mais il doit y avoir une option plus élégante pour les entrées virtuelles, sûrement. "Augmenter la taille du dépôt par un facteur de 100 " - j'ai bien peur de ne pas avoir cette option sur real)). Pro, ne passez pas à côté !

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles
 
Vinin:

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles

Merci.
 
DhP:

Essayez comme ça :

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.

Bonjour, j'ai essayé de le réparer, maintenant le hibou ne fait qu'une seule transaction qui se ferme au niveau du stop loss et c'est tout, aucune autre transaction n'est ouverte.

Dossiers :
 
artemka_1981:

Bonjour. J'ai essayé de corriger le problème mais le hibou ne fait qu'une seule transaction qui se ferme au niveau du stop loss et c'est tout. Aucune autre transaction ne s'ouvre.

if(OrdersTotal()==0)GO=true;
 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}
DhP:

Bonjour. Rien ne marche. Je suis désolé. C'est bon. Je me suis juste embrouillé. Merci beaucoup.
Raison: