Dans la colonne Experts : 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerte : 10009, rien d'autre
Eh bien, voici comment vous aider... D'abord, vous écrivez que Sell Limit n'est pas exposé, vous donnez des extraits du journal. Et maintenant nous parlons d'un ordre d'achat limite. Donc, le problème doit être flottant. De plus, vous n'avez jamais cité la déclaration. Vous prétendez que l'ordre n'est pas visible dans la réalité. Et la déclaration peut aider à clarifier la situation.
voidOnStart()
{MqlTradeRequest request={0};
MqlTradeResult result={0};
doubleBid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
doubleAsk=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
double p=NormalizeDouble(ChartPriceOnDropped(),digits);
if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
{p=MathRound(ChartPriceOnDropped()*0.1)/0.1;
}
int V=75;
if (p<Ask)
{
request.action =TRADE_ACTION_PENDING; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
}
request.type =ORDER_TYPE_BUY_LIMIT; // тип ордера
request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // цена для открытия
request.deviation=50; // допустимое отклонение от цены
request.sl =p; // Stop Loss позиции
request.tp =NormalizeDouble(Ask+(Ask-p)*3,digits); // Take Profit позиции
request.type_filling=ORDER_FILLING_IOC;
request.type_time=ORDER_TIME_DAY;
request.stoplimit=Ask;
OrderSend(request,result);
}
if (p>Bid)
{
request.action =TRADE_ACTION_PENDING; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((p-Bid)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
} // объем
request.type =ORDER_TYPE_SELL_LIMIT; // тип ордера
request.price =NormalizeDouble(Bid+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // цена для открытия
request.deviation=50; // допустимое отклонение от цены
request.sl =p; // Stop Loss позиции
request.tp =NormalizeDouble(Bid-(p-Bid)*3,digits); // Take Profit позиции
request.type_time=ORDER_TIME_DAY;
request.type_filling=ORDER_FILLING_IOC;
request.stoplimit=Bid;
OrderSend(request,result);
}
Alert(result.retcode);
return;
}
Comment puis-je vous aider ? D'abord, vous écrivez que la limite de vente n'est pas placée, et vous donnez des extraits du journal. Nous parlons maintenant d'un ordre d'achat limite. Donc, le problème doit être flottant. De plus, vous n'avez jamais cité la déclaration. Vous prétendez que l'ordre n'est pas visible dans la réalité. La déclaration peut vous aider à clarifier la situation.
Ni la limite de vente ni la limite d'achat n'ont été fixées,Alert(result.retcode) renvoie 10009. Où puis-je obtenir cette "déclaration", que dois-je faire ?
Exécuter ce code par moi-même. Notez que vous obtiendrez une erreur de division de 0 sur les symboles non binaires, car il n'y a pas de marge d'initialisation à ce niveau.
Dans le code où j'ai réussi à l'exécuter, j'ai dû ajouter un contrôle de volume. Sinon, le volume était égal à zéro :
if (request.volume < SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN))
request.volume = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
Après cela, l'ordre est fixé avec succès. Notez également qu'il se déclenche assez rapidement - il est proche du prix. Par conséquent, il se peut que vous ne remarquiez pas la commande elle-même. L'ordre deviendra une position ou sera attaché à celle-ci si le type de compte est compensé.
Ni la limite de vente ni la limite d'achat n'ont été fixées,Alert(result.retcode) renvoie 10009. Où puis-je obtenir ce "retcode", que dois-je faire ?
L'onglet "Historique" de la fenêtre "Boîte à outils". Dans le menu contextuel, sélectionnez "Commandes". Sélectionnez ensuite "Rapport" dans le menu contextuel - "HTML". Mais vous pourrez probablement voir par vous-même pourquoi la commande est manquante : son statut sera marqué "rempli".
Exécuter ce code par moi-même. Notez que vous obtiendrez une erreur de division de 0 sur les symboles non binaires, car il n'y a pas de marge d'initialisation à ce niveau.
Dans le code où j'ai réussi à l'exécuter, j'ai dû ajouter un contrôle de volume. Sinon, le volume était égal à zéro :
Après cela, l'ordre est fixé avec succès. Notez également qu'il se déclenche assez rapidement - il est proche du prix. Par conséquent, il se peut que vous ne remarquiez pas la commande elle-même. L'ordre deviendra une position ou sera attaché à celle-ci si le type de compte est compensé.
A la fin du code également Alert(result.retcode) ;
dans le journal général :
2018.05.14 12:08:16.984 Scripts script LIMIT (Si-6.18,M15) chargé avec succès
2018.05.14 12:08:17.187 Trades '992940' : achat limite 3.00 Si-6.18 à 62091 (62092) sl : 61821 tp : 62905
2018.05.14 12:08:17.484 Trades '992940' : accepté limite d'achat 3.00 Si-6.18 à 62091 (62092) sl : 61821 tp : 62905
2018.05.14 12:08:17.500 Trades '992940' : achat limite 3.00 Si-6.18 à 62091 (62092) sl : 61821 tp : 62905 placé pour exécution
2018.05.14 12:08:17.546 Trades '992940' : ordre #13235300 acheter limite 3.00 / 3.00 Si-6.18 à 62091 fait en 337.532 ms
2018.05.14 12:08:17.578 Scripts script LIMIT (Si-6.18,M15) supprimé
Dans la colonne Experts : 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerte : 10009, rien d'autre
Eh bien, voici comment vous aider... D'abord, vous écrivez que Sell Limit n'est pas exposé, vous donnez des extraits du journal. Et maintenant nous parlons d'un ordre d'achat limite. Donc, le problème doit être flottant. De plus, vous n'avez jamais cité la déclaration. Vous prétendez que l'ordre n'est pas visible dans la réalité. Et la déclaration peut aider à clarifier la situation.
Comment puis-je vous aider ? D'abord, vous écrivez que la limite de vente n'est pas placée, et vous donnez des extraits du journal. Nous parlons maintenant d'un ordre d'achat limite. Donc, le problème doit être flottant. De plus, vous n'avez jamais cité la déclaration. Vous prétendez que l'ordre n'est pas visible dans la réalité. La déclaration peut vous aider à clarifier la situation.
Ni la limite de vente ni la limite d'achat n'ont été fixées, Alert(result.retcode) renvoie 10009. Où puis-je obtenir cette "déclaration", que dois-je faire ?
Exécuter ce code par moi-même. Notez que vous obtiendrez une erreur de division de 0 sur les symboles non binaires, car il n'y a pas de marge d'initialisation à ce niveau.
Dans le code où j'ai réussi à l'exécuter, j'ai dû ajouter un contrôle de volume. Sinon, le volume était égal à zéro :
Après cela, l'ordre est fixé avec succès. Notez également qu'il se déclenche assez rapidement - il est proche du prix. Par conséquent, il se peut que vous ne remarquiez pas la commande elle-même. L'ordre deviendra une position ou sera attaché à celle-ci si le type de compte est compensé.
Ni la limite de vente ni la limite d'achat n'ont été fixées, Alert(result.retcode) renvoie 10009. Où puis-je obtenir ce "retcode", que dois-je faire ?
L'onglet "Historique" de la fenêtre "Boîte à outils". Dans le menu contextuel, sélectionnez "Commandes". Sélectionnez ensuite "Rapport" dans le menu contextuel - "HTML". Mais vous pourrez probablement voir par vous-même pourquoi la commande est manquante : son statut sera marqué "rempli".
J'ai trouvé mon script de 2009, mais il compile maintenant avec un avertissement : 'M' - séquence d'échappement de caractères non reconnus 1.mq4 66 37
Pouvez-vous me dire ce qu'il faut modifier dans la ligne pour compiler correctement ?
Exécuter ce code par moi-même. Notez que vous obtiendrez une erreur de division de 0 sur les symboles non binaires, car il n'y a pas de marge d'initialisation à ce niveau.
Dans le code où j'ai réussi à l'exécuter, j'ai dû ajouter un contrôle de volume. Sinon, le volume était égal à zéro :
Après cela, l'ordre est fixé avec succès. Notez également qu'il se déclenche assez rapidement - il est proche du prix. Par conséquent, il se peut que vous ne remarquiez pas la commande elle-même. L'ordre deviendra une position ou sera attaché à celle-ci si le type de compte est compensé.
J'ai trouvé mon script de 2009, mais il compile maintenant avec un avertissement : 'M' - séquence d'échappement de caractères non reconnus 1.mq4 66 37
Pouvez-vous me dire ce qu'il faut modifier dans la ligne pour compiler correctement ?
Mettre un double backslash devant MQL4