J'utilise le signal Flive, mais il m'arrive de vouloir clôturer moi-même un ordre. Mais dès que je la ferme, elle s'ouvre à nouveau. Y a-t-il un moyen de résoudre ce problème ?
Artur116: J'utilise le signal Flive, mais il m'arrive de vouloir clôturer moi-même un ordre. Mais dès que je la ferme, elle s'ouvre à nouveau. Y a-t-il un moyen de résoudre ce problème ?
Nesradamus: Je suppose qu'il n'y a que deux extrema mensuels - min et max... Bon, peu importe, au début j'avais un long code, c'est pourquoi j'ai demandé de l'aide... Mais ça m'est venu à l'esprit, j'ai réussi à le faire tenir en quatre lignes.
C'est le cas sur un chandelier mensuel. Il y aura bien sûr iHigh(Symbol(), PERIOD_MN1, BarOfMonth) ; et iLow(Symbol(), PERIOD_MN1, BarOfMonth) ;
Et si nous devons trouver des extrema du prix sur un graphique quotidien au cours d'un mois, il y en aura certainement plus d'un sur au moins 28 barres ;)
comment faire en sorte que le rectangle se dessine en avant plutôt qu'en arrière, par exemple cinq barres en avant à un prix spécifié ...... et ne pas le redessiner
Le nom "nom_objet" doit contenir l'heure à laquelle il a été dessiné. Par exemple, "Nom_objet "+TimeToString(Time[0]) ; Ensuite, chaque rectangle aura son propre nom.
Pour spécifier le décalage à droite de la barre zéro, ajoutez le nombre de barres requis à Time[0], par exemple Time[0]+Period()*5*60 (ajoutez cinq barres).
#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos=1;
externint sl=40;
externint tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
intOnInit()
{
//---
MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку//---return(INIT_SUCCEEDED);
}
voidOnTick()
{
//---if(IsNewBar()==true)//если новый бар включаемся
{
if(buy(pos)==true)//если цена выше МА продолжаем
{
if(!ExistPositions(Symbol(),-1,-1,0))//если нету открых ордеров продолжаем
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_BUY)//если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена //все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО // ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
{
trade=true;
}
if(trade==true)
{
OpenPosition(Symbol(),OP_BUY,0.1,Ask-sl*Point,Ask+tp*Point);
trade=false;
}
}
}
if(sell(pos)==true)
{
if(!ExistPositions(Symbol(),-1,-1,0))
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_SELL)
{
trade2=true;
}
if(trade2==true)
{
OpenPosition(Symbol(),OP_SELL,0.1,Bid+sl*Point,Bid-tp*Point);
trade=false;
}
}}
}
}
//возвращает истину если закрытие бара с указаной позицией выше МАbool buy(int pos)
{
if(iClose(Symbol(),0,pos)>MA.Main(1))
returntrue;
elsereturnfalse;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell(int pos)
{
if(iClose(Symbol(),0,pos)<MA.Main(1))
returntrue;
elsereturnfalse;
}
TOUTES LES FONCTIONS sauf deux conditions d'achat et de vente ont été prises dans la branche de kim...... s'il vous plaît dites-moi où j'ai fait une erreur... J'ai besoin d'une transaction pour ouvrir sur une intersection.
Je n'arrive pas à comprendre ce qui ne va pas ? Dans le testeur, tout fonctionne, mais sur le réel et la démo, lorsque j'essaie d'ouvrir un ordre, j'obtiens "Error 0". GetLastError() renvoie "0", ce qui signifie qu'il n'y a pas d'erreur. Qu'est-ce que cela signifie ?
Leo59: Je n'arrive pas à comprendre ce qui ne va pas ? Dans le testeur, tout fonctionne, mais sur le réel et la démo, lorsque j'essaie d'ouvrir un ordre, j'obtiens "Error 0". GetLastError() renvoie "0", ce qui signifie qu'il n'y a pas d'erreur. Qu'est-ce que cela signifie ?
Cela signifie que c'est ainsi qu'il est écrit dans le code, si cela vous dérange, veuillez le corriger.
J'utilise le signal Flive, mais il m'arrive de vouloir clôturer moi-même un ordre. Mais dès que je la ferme, elle s'ouvre à nouveau. Y a-t-il un moyen de résoudre ce problème ?
Décochez "Synchroniser les positions...".
Je suppose qu'il n'y a que deux extrema mensuels - min et max... Bon, peu importe, au début j'avais un long code, c'est pourquoi j'ai demandé de l'aide... Mais ça m'est venu à l'esprit, j'ai réussi à le faire tenir en quatre lignes.
C'est le cas sur un chandelier mensuel. Il y aura bien sûr iHigh(Symbol(), PERIOD_MN1, BarOfMonth) ; et iLow(Symbol(), PERIOD_MN1, BarOfMonth) ;
Et si nous devons trouver des extrema du prix sur un graphique quotidien au cours d'un mois, il y en aura certainement plus d'un sur au moins 28 barres ;)
une autre question sur la fonction
comment faire en sorte que le rectangle se dessine en avant plutôt qu'en arrière, par exemple cinq barres en avant à un prix spécifié ...... et ne pas le redessiner
Le nom "nom_objet" doit contenir l'heure à laquelle il a été dessiné. Par exemple, "Nom_objet "+TimeToString(Time[0]) ; Ensuite, chaque rectangle aura son propre nom.
Pour spécifier le décalage à droite de la barre zéro, ajoutez le nombre de barres requis à Time[0], par exemple Time[0]+Period()*5*60 (ajoutez cinq barres).
Existe-t-il un moyen dans mql4 de masquer certains codes, de réduire la zone de code de sorte qu'elle soit placée sous le plus (+) ?
comme dans #region #endregion, le code placé entre ces directives sera possible à effondrer.
Je n'arrive pas à comprendre ce qui ne va pas ? Dans le testeur, tout fonctionne, mais sur le réel et la démo, lorsque j'essaie d'ouvrir un ordre, j'obtiens "Error 0". GetLastError() renvoie "0", ce qui signifie qu'il n'y a pas d'erreur. Qu'est-ce que cela signifie ?
Cela signifie que c'est ainsi qu'il est écrit dans le code, si cela vous dérange, veuillez le corriger.
C'est écrit dans le code, donc si cela vous dérange, corrigez-le.
Que dois-je faire si la commande ne s'ouvre pas ?