Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 506

 
que quelqu'un écrive la structure d'un ordre à cours limité
 
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 ?

Décochez "Synchroniser les positions...".
 
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 ;)

 
Zver4991:

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).

datetime t1=Time[10], t2=Time[0]+Period()*60*5;
SetRectangle(clrBlue,"Прямоугольник"+TimeToString(Time[0]),t1,Low[10],t2,High[0]);
 
#property strict
#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
extern int pos=1;
extern int sl=40;
extern int tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
int OnInit()
  {
//---
   MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку
//---
   return(INIT_SUCCEEDED);
   
  }
void OnTick()
  {
//---
  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))
      return true;
   else
      return false;
  }
//+------------------------------------------------------------------+
//| возвращает истину если закрытие бара  с указаной позицией ниже МА
//+------------------------------------------------------------------+
bool sell(int pos)
  {
   if(iClose(Symbol(),0,pos)<MA.Main(1))
      return true;
   else return false;
  }
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.
 

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 ?
 
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.
 
evillive:

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 ?
Raison: