Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 97
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
Bon après-midi, Messieurs)
J'essaie de préparer des données pour la formation d'un réseau neuronal. La tâche est.
Avoir une matrice, où par exemple chaque ligne (moment - barre) est un vecteur d'entrée, et les colonnes par exemple 10000. Que faire s'il y a des données dynamiques (nombre de lignes1, lignes2), et que leur nombre change à différents moments.
Par exemple, une matrice est chargée dans un réseau, chaque ligne est un vecteur d'apprentissage, mais pour chaque ligne, il y a un nombre n de lignes qui changent dynamiquement dans le temps.
Une conjecture de solution possible est d'ajouter des colonnes supplémentaires à la matrice égale au nombre de colonnes de la ligne dynamique, il s'avère que chaque vecteur aura des colonnes de la dénamique, mais comme si d'une seule ligne, juste prosumée.
par exemple
1er vecteur
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "ligne1 dynamique" 1 1 1 1 1 1
ssssssssssssssssssssssssssssss "ligne2 dynamique" 1 1 1 1 1
solution
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "ligne1 dynamique" 2 2 2 2 2 2
Bon après-midi, Messieurs)
J'essaie de préparer des données pour la formation d'un réseau neuronal. La tâche est.
Avoir une matrice, où par exemple chaque ligne (moment - barre) est un vecteur d'entrée, et les colonnes par exemple 10000. Que faire s'il y a des données dynamiques (nombre de lignes1, lignes2), et que leur nombre change à différents moments.
Par exemple, une matrice est chargée dans un réseau, chaque ligne est un vecteur d'apprentissage, mais pour chaque ligne, il y a un nombre n de lignes qui changent dynamiquement dans le temps.
Une conjecture de solution possible est d'ajouter à la matrice des colonnes supplémentaires égales au nombre de colonnes de la rangée dynamique, il s'avère que chaque vecteur aura des colonnes de la dénamique, mais comme si d'une seule rangée, juste prosumée.
par exemple
1er vecteur
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "ligne1 dynamique" 1 1 1 1 1 1
ssssssssssssssssssssssssssssss "ligne2 dynamique" 1 1 1 1 1
solution
1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "ligne1 dynamique" 2 2 2 2 2 2
https://www.mql5.com/ru/articles/159
Il y a donc MQL5, comme je le comprends. Ou est-il identique ?
Bon après-midi. J'ai créé un EA, il fonctionne bien, mais si j'éteins le terminal avec l'EA en cours d'exécution et que je rallume le terminal, l'EA recommence à compter. Alors, j'ai une question. Que dois-je prescrire dans l'EA, pour qu'il réinitialise les paramètres d'entrée au démarrage ?
Bon après-midi. J'ai créé un EA, il fonctionne bien, mais si j'éteins le terminal avec l'EA en cours d'exécution et que je rallume le terminal, l'EA recommence à compter. Alors, j'ai une question. Que dois-je écrire dans mon EA, pour qu'il réinitialise les paramètres d'entrée lorsque je le démarre ?
Salutations. Pouvez-vous me dire ce qui ne va pas ?
L'EA place des ordres avec des stops au-dessus et au-dessous du prix. Si l'un d'entre eux se déclenche, le stop est ajusté si le prix s'éloigne du stop plus que prévu, si le prix se rapproche du stop alors aucun changement.
Au début, je n'ai écrit que l'ordre d'achat et cela a fonctionné comme prévu. Si j'ajoute une image miroir pour la vente, les arrêts seront corrigés de la valeur définie quelle que soit l'évolution du prix.
En général, si séparément, ou pour acheter ou pour vendre - tout fonctionne comme il se doit, mais les deux parties ensemble - il ya un bug.
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern double Lot = 0.01;
extern int StopLoss = 50;
extern int Slippage = 5;
extern int Delta = 60;
extern int Delta2 = 170;
extern int Magic = 321;
int ticket;
double price, sl, sl2;
datetime counted_bar = 0;
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
StopLoss *= 10;
Delta *= 10;
Delta2 *= 10;
}
return(INIT_SUCCEEDED);
}
void OnTick() {
////// ПРОДАЖА ///////////////////////////////////////////////////////
if (SellLimitCount()==0 && SellCount()==0)
{
price = NormalizeDouble(Bid - Delta*Point, Digits);
sl = NormalizeDouble(price + StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red);
}
if (SellCount()!=0)
{
if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Bid + StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok");
else Print ("ERROR_Sell_Order_Modify");
}
}
if (SellLimitCount()!=0)
{
if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Odrer_Delete");
}
}
/////////////////////////////////////////////////////////////////////////////////
/////// ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()==0 && BuyCount()==0)
{
price = NormalizeDouble(Ask + Delta*Point, Digits);
sl = NormalizeDouble(price - StopLoss*Point, Digits);
ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue);
}
if (BuyCount()!=0)
{
if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits)))
{
sl = NormalizeDouble (Ask - StopLoss*Point, Digits);
if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok");
else Print ("ERROR_Buy_Order_Modify");
}
}
if (BuyLimitCount()!=0)
{
if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits)))
{
if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok");
else Print ("ERROR_BuyLimit_Orde_Delete");
}
}
///////////////////////////////////////////////////////////////////////////////
}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUYSTOP)
count++;}}}return(count);}
int BuyCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUY)
count++;}}}return(count);}
int SellLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELLSTOP)
count++;}}}return(count);}
int SellCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELL)
count++;}}}return(count);}
Salutations. Pouvez-vous me dire ce qui ne va pas ?
L'EA place des ordres avec des stops au-dessus et au-dessous du prix. Si l'un d'entre eux se déclenche, le stop est ajusté si le prix s'éloigne du stop plus que prévu, si le prix se rapproche du stop alors aucun changement.
Au début, je n'ai écrit que l'ordre d'achat et cela a fonctionné comme prévu. Si j'ajoute une image miroir pour la vente, les arrêts seront corrigés de la valeur définie quelle que soit l'évolution du prix.
En général, si séparément, ou pour acheter ou pour vendre, tout fonctionne comme il se doit, mais les deux parties ensemble - il ya un bug.
L'ensemble du code que vous nous avez montré est un bug, n'est-ce pas ? En tout cas, la fonction OnTick est presque entièrement un bug...
Un bug, vous voulez dire l'ensemble du code affiché ?