[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 482

 
Urain писал(а) >>

Ecrire une fonction bool() pour vérifier si la différence entre le prix et le stoploop fixé est supérieure au StopLoss (à partir de marketinfo)

alors vrai sinon faux.

Ensuite, avant d'ouvrir un ordre, vous devez vérifier if(function()) et ouvrir un ordre.


Pourquoi en ai-je besoin si je fixe le stop loss à 30% de plus que le stop loss de cette société de courtage ?

khorosh a écrit >>

Les points 2 et 3 sont faux. A droite : Stop Loss et Take Profit pour l'achat à partir de l'Ask, Stop Loss et Take Profit pour la vente à partir de l'Bid.
Le contrôle est simple. Calculez quel gain, si le takeprofit s'est déclenché, vous obtiendrez avec votre variante. Il ne sera pas égal à TakeProfit en points. Dans la variante proposée, elle sera exactement égale.


Je l'ai donc modifié comme précédemment et j'ai obtenu le même résultat. Je n'ai laissé que la normalisation des prix.
Mais l'erreur dans le testeur demeure et le plus intéressant est qu'elle se répète non pas pour tous les ordres mais pour certains d'entre eux.
Il y a l'erreur 4107 pour 1 commande sur 10 et il retourne les 9 autres sans erreur.

 

Помогите пожфлуйста с индикаторами: 1-й чтобы не убирал разметку на графике. 2-й чтобы лини старших ТФ были внешними на младших и чтобы можно было задать отоброжение(после того как задаешь отоброжение сразу все нормально пока не перещелкнешь ТФ,после этого все линии младших ТФ на старших)нии младших ТФ на старших)

 
J'ai oublié...
Dossiers :
macd.rar  7 kb
 
2
Dossiers :
multi.rar  9 kb
 
baltik писал(а) >>


Pourquoi en ai-je besoin si j'ai fixé le Stop Loss à 30% de plus que le Stop Level dans ma société de courtage ?


Je l'ai donc refait tel quel et le résultat est toujours le même, je n'ai laissé que la normalisation des prix.
Mais l'erreur dans le testeur est restée et le plus intéressant est que j'ai des erreurs dans certains ordres et pas dans tous.
Pour 1 des 10, il a donné l'erreur 4107, et les 9 autres sont traités sans erreur.


Montrez-moi le code, regardons-le.
 
Noterday >>:
Народ, у меня проблема, причем никак не могу допетрить в чем дело, особо не пинайте.
Есть стандартный MACD, хочу в индикаторе отметить все пики столбцов (значками), вот код:
Таким образом я нарисовал все экстремумы в индикаторе. Всё ОК, НО!
Когда функцией Print я вывожу значения всех найденых пиков
то вот что выходит:
Я так понимаю что 2147483647 это нули или пустые значения?

Personne ne peut aider ? :)

 
Noterday писал(а) >>

Personne ne peut aider ? :)


Le problème semble provenir des tableaux MAX et MIN.
Sont-ils liés aux tampons des indicateurs avec SetIndexBuffer() ?

 
Oui, bien sûr :)
 
Noterday писал(а) >>
Oui, bien sûr :)


Utilisez-vous la fonction IndicatorBuffers() ?

 
Voici le code complet :
#property indicator_separate_window
#property indicator_buffers 4

#property indicator_color1 MediumPurple
#property indicator_color2 MediumPurple
#property indicator_color3 Green
#property indicator_color4 Red

#property indicator_width3 1
#property indicator_width4 1


extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;

double MMACD1[];
double SMACD1[];
double MAX[];
double MIN[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{

SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);

SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(2,119);
SetIndexArrow(3,119);

SetIndexDrawBegin(1,SMACD1);
IndicatorDigits(Digits+2);

SetIndexBuffer(0,MMACD1);
SetIndexBuffer(1,SMACD1);
SetIndexBuffer(2,MAX);
SetIndexBuffer(3,MIN);

IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");

return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

for(int i=0; i<limit; i++)
MMACD1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

for(i=0; i<limit; i++)
SMACD1[i]=iMAOnArray(MMACD1,Bars,SignalSMA,0,MODE_SMA,i);

for(i=0; i<limit; i++)
{
if(MMACD1[i+1] > MMACD1[i+2] && MMACD1[i+1] > MMACD1[i])
MAX[i+1] = MMACD1[i+1];

if(MMACD1[i+1] < MMACD1[i+2] && MMACD1[i+1] < MMACD1[i])
MIN[i+1] = MMACD1[i+1];
}

for(i=0; i<limit; i++)
{
if (MAX[i+1] != EMPTY_VALUE)
Print(MAX[i+1]);
}

return(0);
}
//+------------------------------------------------------------------+