Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
J'espère qu'une valeur est attribuée à la variable Percent dans OnInit()?
Ma variable Percent est définie par l'utilisateur. OnInit() j'ai laissé tomber.
si Lots=0, rien ne sera ouvert par le testeur
Margin_Percent=AccountFreeMargin()*Percent/100;
Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
if(Lots>Lots_Volume){
Lots=Lots_Volume;
}
else if(Lots<Lots_Volume)
Lots=MathFloor(Lots);
Print("Количество лотов : ",Lots);
return;
Et encore, où dans le code est fixé le pourcentage
et que signifie la commande suivante print("Lots : ",Lots) ; ?
Pourtant, où dans le code est le pourcentage
et que signifie la commande suivante print("Nombre de lots : ",Lots) ; ?
#property version "1.00"
#property strict
//--- input parameters
input int Percent=50;
input int Fast_EMA_Period=12;
input int Slow_EMA_Period=25;
input int Signal_Period=9;
input double Step_PSAR=0.02;
input double Maximum_PSAR=0.2;
input int MAGICNUMBER=413;
static datetime New_Time;// Время текущего бара
double Margin_Percent; //Используемые средства для открытия ордеров
double Lots;//Определение общего количества лотов
double Lots_Volume;
double MacdCurrent;//Параметры MACD основной линии текущего бара
double MacdPrevious1;//Параметры MACD основной линии предыдущего бара
double MacdPrevious2;//Параметры MACD основной линии со смещением на 2 бара
double StopLoss;//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss;//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR;//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bool New_Bar=false; // Флаг нового бара
int ticket,total,cnt;
//---------------------------------------------------------------------------
New_Time=TimeCurrent();
if(Time[0]==New_Time) // Сравниваем время
New_Bar=true; // Поймался новый бар
else if(New_Bar==false) // Если бар не новый..
Dans la cinquième ligne, le pourcentage est fixé. Le journal indique : "Le nombre de lots est de 90.0100000001". Peut-être devrions-nous ajouter NormalizeDouble() ?
Il n'y a pas de problème avec le terrain.
Recherchez une erreur dans la logique d'ouverture de l'ordre.
Dans ce cas, j'ai l'habitude de fixer une condition explicite qui ouvrira l'ordre.
Il n'y a pas de problème avec le terrain.
Recherchez une erreur dans la logique d'ouverture de l'ordre.
En général, dans ces cas-là, je fixe une condition explicite à l'ouverture de l'ordre.
Veuillez donner un exemple avec une condition explicite. Si je comprends bien, il devrait y avoir une condition dans la boucle pour l'ouverture. N'est-ce pas ?
Donnez une commande pour ouvrir un ordre au début du code, juste après avoir calculé le lot, et assurez-vous que le testeur fonctionne correctement. Ensuite, vous pouvez tout remettre en place.
La cinquième ligne précise le pourcentage. Le journal affiche : "Nombre de lots 90.0100000001". Peut-être devrions-nous ajouter NormalizeDouble() ?