찻주전자의 질문 - 페이지 243

 
paladin800 :
Do ArrayResize(Buf, Rates_total);

그래도 그렇게 하면 최소한 오류가 발생하지 않습니다.

 int start= 10 ;

그리고 유로 M1에서 직선 = 0.014를 그립니다.

 

안녕하세요.

어떤 이유로 작동하지 않는 코드가 있습니다.

m_symbol.Ask() 메서드의 가격은 0을 반환합니다.

코드 심사 위원을 위해 엄격히. 난 그냥 배우고 있어요. 어떤 적절한 비판도 들을 준비가 되어 있습니다.

지금까지의 목표는 포즈를 여는 것이었습니다. 수량은 아직 흥미롭지 않습니다(구현하기 쉽습니다).

 //+------------------------------------------------------------------+
//|                                                        probe.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       ""
#property version   "1.00"
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
input int     perMA1= 3 ;
input int     perMA2= 7 ;
input double DifMANeed= 0 ;
input double InpLots= 0.1 ;
double DifMAN= 0 ;

CTrade m_trade;
CSymbolInfo m_symbol;

class MATest{
private :
   int MA1;     //First MA
   int MA2;     //Two MA
   
public :
   double DifMA;   //Diference of MA
   bool TradeAllowed();     
};
bool MATest::TradeAllowed(){
   MA1= iMA ( NULL , 0 ,perMA1, 0 , MODE_SMA , PRICE_CLOSE );
   MA2= iMA ( NULL , 0 ,perMA2, 0 , MODE_SMA , PRICE_CLOSE );
   double price=m_symbol.Ask();
   m_trade.SetDeviationInPoints( 5 );
   DifMA= MathAbs (MA1-MA2);
   Print (price);
   if (DifMA>DifMAN){
       if (MA1>MA2){
         if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,InpLots,m_symbol.Ask(), 0 , 0 )){
             Print ( "Open Sell" );
        }
         else Print ( "Cant not open Sell" );
      }
       if (MA1<MA2){
         if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,m_symbol.Bid(), 0 , 0 )){
             Print ( "Open Buy" );
        }
         else Print ( "Cant not open Buy" ,m_symbol.Name(),m_symbol.Bid());
      
      }
       return ( true );
   }
   else return ( false );
};

MATest g_trade;

int OnInit ()
  {
//---
   string symb= Symbol ();
   m_symbol.Name(symb);
   
   Alert (m_symbol.Name(), " " , NormalizeDouble (m_symbol.Bid(),m_symbol. Digits ()));
   double close_array[];
       CopyClose ( NULL , 0 , 1 , 200 ,close_array);
   double high_array[];
       CopyHigh ( NULL , 0 , 1 , 200 ,high_array);
   double low_array[];
       CopyLow ( NULL , 0 , 1 , 200 ,low_array);
   double volant;
   for ( int i= ArraySize (close_array);i< 0 ;i--){
         volant+=(close_array[i]+high_array[i]+low_array[i])/ 3 ;
         volant=volant/ ArraySize (close_array);
      }
   if (DifMANeed== 0 ||DifMANeed>volant){
      DifMAN=volant;
   }
   
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (g_trade.TradeAllowed()) Comment (g_trade.DifMA, "  Trade Allowed" );
   else Comment (g_trade.DifMA, " Trade Not Allowed" );
  }
//+------------------------------------------------------------------+
 
panker :

안녕하세요.

어떤 이유로 작동하지 않는 코드가 있습니다.

m_symbol.Ask() 메서드의 가격은 0을 반환합니다.

코드 심사 위원을 위해 엄격히. 난 그냥 배우고 있어요. 어떤 적절한 비판도 들을 준비가 되어 있습니다.

지금까지의 목표는 포즈를 여는 것이었습니다. 수량은 아직 흥미롭지 않습니다(구현하기 쉽습니다).

SymbolSelect와 같은 기능이 누락되었을 수 있습니다.

이 경우 이름 명령입니다.

https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfoask - 참고 사항 참조

Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Ask
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Ask
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / Ask - Документация по MQL5
 
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates - Документация по MQL5
 
panker : 어떤 이유로 작동하지 않는 코드가 있습니다. m_symbol.Ask() 메서드의 가격은 0을 반환합니다.
라이브러리 자체의 구현을 살펴보십시오. Ask() 메서드는 어리석게도 m_tick.ask의 값을 반환합니다. m_tick 값을 업데이트하기 위해 RefreshRates() 메서드가 제공됩니다. ..내가 앞서갔다 :)
 

누군가가 몇 가지 예제 코드를 제공할 수 있습니까?

"십진 스크롤 막대"를 만드는 방법은 무엇입니까?

MQL5 CScroll 클래스 를 사용했습니다. https://www.mql5.com/en/docs/standardlibrary/controls/cscroll

Documentation on MQL5: Standard Library / Classes for Control Panels and Dialogs / CScroll
Documentation on MQL5: Standard Library / Classes for Control Panels and Dialogs / CScroll
  • www.mql5.com
Standard Library / Classes for Control Panels and Dialogs / CScroll - Documentation on MQL5
 
제 기억이 맞다면 OnDeinit() 함수를 실행하는 데 2.5초가 걸립니다. 질문 1: 이 시간 동안 모든 표시기 핸들이 해제되지 않으면 어떻게 됩니까? 질문 2: OnInit() 함수의 작업에 시간 제한이 있습니까?
 
paladin800 :

제 기억이 맞다면 OnDeinit() 함수의 실행 시간은 2.5초입니다.

질문 1: 이 시간 동안 모든 표시기 핸들이 해제되지 않으면 어떻게 됩니까?

표시기 핸들은 일반적으로 MT5에서 별도의 문제입니다. 그들의 릴리스는 EA 자체에 의해 그다지 제어되지 않기 때문에(그것은 그것들이 필요하지 않다는 명령을 내리고 핸들 값을 재설정할 수 있을 뿐입니다), 터미널 자체에 의해(전체의 완전한 제거에 대한 최종 결정을 내리는) 메모리에서 핸들).


질문 2: OnInit() 함수의 동작에 시간 제한이 있습니까?

아니요
 

매년 "수익성있는 회랑"이 무엇인지 말해보십시오. (에 %%)

파일:
12.png  45 kb
 
저는 Symbol0="EURUSD" 문자열과 같이 입력 매개변수에 상품 이름이 지정되어 있는 다중 통화 Expert Advisor를 작성 중입니다. 이름을 잘못쓰면 거래가 진행되지 않습니다. 질문: 상품명과 브로커가 제공하는 상품명을 비교하는 기능이 있습니까?
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5