[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 253

 
Dimka-novitsek:

Pour exprimer le nombre de points, vous devez diviser par Point. Il semble s'agir d'une variable dite prédéfinie, qui correspond à la taille d'un seul point. Oh, non, non, ce n'est pas ça. Disons que vous avez une certaine valeur de prix, disons 1.2244. Si vous voulez ajouter 5 points au prix, vous devez l'écrire comme 1.2244+(5*Point), il sera 1.2249. Vous comprenez ?


Tout s'explique maintenant, merci beaucoup !
 

Je n'arrive pas à insérer une fonction dans la dinde. (' - Fonction permettant de déterminer l'inattendu C :. \N- L'indicateur \Nexpérimental \NIndexDiamond mq4 (142, 19)

Qu'est-ce qu'il manque ? '(' - définition de fonction inattendue C:\Òterminalëë\experts\indicators\ÈäþêÄèìîínà .mq4 (142, 19)

//+------------------------------------------------------------------+
//|                                                 ИндюкДимона .mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property link      "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 DarkBlue
#import "user32.dll"
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND                     0x0111
int delimiter = 0;



double ВерхняячертаBuffer1[];
double НижняячертаBuffer2[];
double СинняячертаBuffer3[];
 double вершина; 
 double основание_первого_снижения;
 double начало;
 double вершина_волны_3;
 extern int T=4,K=200;
 int timeframe, start ;
 int бар_вершина ;
 int бар_основание_первого_снижения;
 int бар_начало;
 int pereklutsatel;
double naklon,linija2; int P;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()

  {SetIndexStyle(0,DRAW_SECTION,STYLE_SOLID,2,CLR_NONE);//Alert ("SetIndexStyle ",GetLastError( ) );
  SetIndexBuffer(0,ВерхняячертаBuffer1);//Alert ("SetIndexBuffer ",GetLastError( ) );
   SetIndexEmptyValue(0,0.0);
   
   SetIndexStyle(1,DRAW_SECTION,STYLE_SOLID,2,CLR_NONE);//Alert ("SetIndexStyle ",GetLastError( ) );
  SetIndexBuffer(1,НижняячертаBuffer2);//Alert ("SetIndexBuffer ",GetLastError( ) ); 
   SetIndexEmptyValue(1,0.0);
   
   SetIndexStyle(2,DRAW_SECTION,STYLE_SOLID,T,CLR_NONE);//Alert ("SetIndexStyle ",GetLastError( ) );
  SetIndexBuffer(2,СинняячертаBuffer3);//Alert ("SetIndexBuffer ",GetLastError( ) ); 
   SetIndexEmptyValue(2,0.0);
//---- indicators




//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   
   for ( int J=0;J<=49;J++){
//----

  // for(int i=Bars; i>=0;i--)
  int i=Bars;
      бар_вершина=iHighest( NULL,  timeframe, MODE_HIGH, K, start ) ;
       вершина =High[ бар_вершина ];
       бар_основание_первого_снижения=iLowest( NULL,  timeframe, MODE_LOW,NormalizeDouble ( бар_вершина/2,0), start ) ;
       основание_первого_снижения=Low[ бар_основание_первого_снижения ];
       бар_начало=iLowest( NULL,  timeframe, MODE_LOW,NormalizeDouble (бар_вершина*1.5,0), бар_вершина ) ;
       начало=Low[ бар_начало ];
       
      //   Alert ( " бар_вершина   ",бар_вершина  , " вершина  " , вершина ,
      //    " бар_основание_первого_снижения  " ,бар_основание_первого_снижения  , " основание_первого_снижения  " , основание_первого_снижения , 
      //    " бар_начало  " , бар_начало   , " начало  " , начало    );
  if(начало>основание_первого_снижения){naklon=(начало-основание_первого_снижения)/(бар_начало-бар_основание_первого_снижения);
 // Alert("naklon  ", naklon);
    НижняячертаBuffer2[бар_начало]=начало;linija2=начало;for(i=бар_начало-1;i>=0;i--){linija2=linija2-naklon;
  //  Alert ("linija2  " , linija2 );
    НижняячертаBuffer2[i]=linija2;
   //  Alert("НижняячертаBuffer2[i]  ", НижняячертаBuffer2[i] , "  i " , i);
   }
    НижняячертаBuffer2[бар_основание_первого_снижения]=основание_первого_снижения;}
    
    
         for (i=0;i<100;i++){  СинняячертаBuffer3[i]= Open[i];}
          for (i=330;i<500;i++){  СинняячертаBuffer3[i]= Open[i];}

     ВерхняячертаBuffer1[бар_начало]=начало;
     
 double точка4; int бар_точка4;   бар_точка4=iHighest( NULL,  timeframe, MODE_HIGH, бар_основание_первого_снижения, 3 ) ; 
  точка4 =High[ бар_точка4 ];  
   
   if(вершина>точка4){naklon=(начало-точка4)/(бар_начало-бар_точка4);  
   double linija1=начало;for(i=бар_начало-1;i>=0;i--){linija1=linija1-naklon;ВерхняячертаBuffer1[i]=linija1; }}
   
 double vulf=НижняячертаBuffer2[0];
  if ( vulf==Ask&&vulf==Bid)vulf=1;
  else{ for (vulf=vulf+Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf-Point){
           if ( vulf==Ask&&vulf==Bid){vulf=1;}} 
      for (vulf=vulf-Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf+Point){
           if ( vulf==Ask&&vulf==Bid)vulf=1;} 
              
           
           
           }
           
           
   if (vulf==1){Comment ("  Есть вульв!!! "  , "  timeframe " , timeframe);return(0);  }
   
   if (vulf!=1&&pereklutsatel==1) {    
   
     if(delimiter<3){delimiter++;Comment(delimiter);return(0);}
   delimiter=0;
    fChangePeriod();P++;
                                 
                   }  
 if (P>8){  K=K+50;return(0);P=0; }    
//----
   return(0);
  }
//+------------------------------------------------------------------+


void fChangePeriod(){int ii,hwd = WindowHandle(Symbol(),Period());
   switch(Period()){
      case PERIOD_W1    : ii = 33134; break; //PERIOD_D1;
      case PERIOD_D1    : ii = 33136; break; //PERIOD_H4;
      case PERIOD_H4    : ii = 33135; break; //PERIOD_H1;
      case PERIOD_H1    : ii = 33140; break; //PERIOD_M30;
      case PERIOD_M30   : ii = 33139; break; //PERIOD_M15;
      case PERIOD_M15   : ii = 33138; break; //PERIOD_M5;
      case PERIOD_M5    : ii = 33137; break; //PERIOD_M1;
      case PERIOD_M1    : ii = 33141; break; //PERIOD_W1;
   }     
   PostMessageA(hwd, WM_COMMAND, ii, 0);
   return;
}
 
Pouvez-vous me dire s'il existe déjà un indicateur qui calcule l'indice (panier) des devises en pourcentage ?
par exemple de
Euro 37,4
Yen japonais 9,4
Livre sterling 11,3
Dollar américain 41,9
 

Bonjour, pourriez-vous expliquer à un débutant comment l'indicateur "mikahekin" modifie le tampon affiché ? Et comment faire pour que la fonction "Alerte" me signale un changement de tendance ?

P.S. L'indicateur est ci-dessous.

Dossiers :
 

Dites-moi, est-il possible de craquer un fichier avec l'extension ex4, qui est sur le mot de passe. Et que peut-on faire d'autre que le mot de passe écrit dans le tutoriel de Kovalev, pour que l'expert ne soit pas piraté (si possible, bien sûr) ?

Merci.

 
Skander:

Et que peut-on faire d'autre que le mot de passe écrit dans le tutoriel de Kovalev pour empêcher le piratage de l'expert (si c'est possible, bien sûr) ?

Laissez-les s'introduire. Cela n'a pas d'importance. Aucun conseiller expert ne changera le marché, et tout le monde sur le marché ne peut pas gagner de l'argent, ce n'est pas possible.
 
Skander:

Dites-moi s'il est possible de craquer un fichier avec l'extension ex4 qui est sur le mot de passe.

vous pouvez.
 

Bonjour, Professionnels ! S'il vous plaît, conseillez-moi, j'ai testé le Moving Average Expert Advisor, mais après le week-end le testeur donne l'erreur 131 volumes erronés ... mais avant cela tout allait bien ... J'ai testé avec une plate-forme de MetaQuotes Software Corp.

 
Zhunko:

Ce script fonctionne pour moi :

Cet expert fonctionne étrangement. On pourrait dire que ça ne marche pas. Il n'allume le TF que jusqu'à M5.

Je vais attendre les vrais tics. Je ne comprends pas comment le problème est apparu. Quelque chose a changé dans les nouvelles versions de MT4.

Je me suis trompé dans le code de l'Expert Advisor. L'EA bouclé changera le TF par lui-même, mais le code est trop lourd.

Cela pourrait être plus simple. Ceci est pour ceux qui ont accès à la mise à jour autonome de la carte (cela fonctionnera le samedi et le dimanche) :

#include <ServicesMT4.mqh>
int g_hwndChart = NULL;
int g_nCounter = 0;

void init()
 {
  g_hwndChart = WindowHandle(Symbol(), Period()); // Получаем системный дескриптор графика.
  if (UninitializeReason() == 0) ServiceRefreshChart(g_hwndChart, 2000); // Запускаем обновление графика каждые 2 секунды.
 }

void deinit()
 {
  if (UninitializeReason() == REASON_REMOVE || UninitializeReason() == REASON_CHARTCLOSE)
   {
    ServiceStopRefreshChart(g_hwndChart); // Останавливаем обновление.
   }
 }

void start()
 {
  ServiceSetTimeframeByNumber(g_hwndChart, g_nCounter % 9);
  g_nCounter++;
  Sleep(2000);
 }
C'est pour ceux qui ne peuvent pas accéder aux mises à jour des graphiques hors ligne :
#include <ServicesMT4.mqh>
int g_hwndChart = NULL;
int g_nCounter = 0;

void init()
 {
  g_hwndChart = WindowHandle(Symbol(), Period()); // Получаем системный дескриптор графика.
 }

void start()
 {
  ServiceSetTimeframeByNumber(g_hwndChart, g_nCounter % 9);
  g_nCounter++;
  Sleep(2000);
 }

Ou comme ça :

#include <ServicesMT4.mqh>
int g_nCounter = 0;

void start()
 {
  ServiceSetTimeframeByNumber(WindowHandle(Symbol(),Period()), g_nCounter % 9);
  g_nCounter++;
  Sleep(2000);
 }

Eh bien, qu'en penses-tu, Rustam ? Est-ce que quelqu'un ici a montré ces deux derniers jours le code de commutation TF dans Expert Advisor ? Vous pensez être un pro, mais vous n'arrivez pas à comprendre. Vous ne pouviez pas voir l'erreur dans un simple code. Mais vous avez réussi à faire l'éloge du développement de quelqu'un d'autre.

 

Vadim, personne ne doute de ta génialité, je voulais dire que tout cela peut être fait avec des outils API plus simples, ce qui est le point de départ de la question, mais au lieu d'expliquer et d'aider, tu as déplacé la conversation vers ton propre sujet, comme d'habitude. Et les conséquences ne se font pas attendre.

En ce qui me concerne - tout chez moi commute, fonctionne, toujours, et comme il se doit :

>