MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 490

 
Kot :

안녕하세요!


특정 계산을 수행하는 EA가 있습니다. 다른 매트 연산, 배열, 루프를 사용합니다. 결과 는 파일에 기록됩니다 . 모든 단계를 완료한 후에는 처음부터 모든 것을 시작해야 합니다. 그러나 모든 계산을 한 번만 수행하고 두 번째 시작하고 정지하면 아무 작업도 수행되지 않습니다. 새 계산을 시작하기 전에 변수를 재설정하거나 배열을 지우는 등의 작업이 필요할 수 있습니다.

파일을 닫으셨습니까?

 
안녕하세요! 나는 이와 같은 가장 작은 지식으로 지표를 만들려고 노력하는 인도주의자(나)의 도움이 필요합니다))) 그러나 무엇이 나타나야 하는지에 대한 이해가 있습니다)) 그래서:
들어 소스 파일 형식:
EUR;TF;1.192;1.1733
EUR;TN;1.2037;1.1663
EUR;AB1;1.1906499615;1.1797479615
CHF;TF;1.0362;1.0183
CHF,TN,1.0479,1.0121
CHF;AB1;1.03484132734247;1.02549513556164


저것들. 표시기는 파일에서 기록된 데이터를 가져와 세그먼트(TF, TA) 형태의 차트에 주석 과 함께 삽입하거나
길이 매개변수가 정확히 "일"인 색상 범위(EA)(경계에서 경계까지 MT4의 세로 구분자 중), 행의 경우 행의 색상, 행 유형, 텍스트 색상 및 주석 크기 선택, 주석 세그먼트를 행으로 대체(예: "TF - 1,192" 파일의 해당 라인에서 가져온 두 번째 라인 "TF - 1,1733". 동시에 세그먼트는 순전히 수평이며 EUR;TF;1.192;1.1733 라인에서 수평선으로 정확히 한 세그먼트의 첫 번째 숫자와 세그먼트 1.192의 시작으로 두 번째 세그먼트의 두 번째 숫자가 필요합니다. 끝 1.192.
범위도 있습니다(예: EA). 원칙은 하루의 시작부터 끝까지 동일하지만 가격 매개변수가 다르며 시작 및 종료 라인은 CHF;AB1;1.03484132734247;1.02549513556164 시작입니다.
1.03484132734247 범위 끝 1.02549513556164. MT4가 켜져 있을 때(차트 위에 서 있는 일반 칠면조처럼) 매일 차트에 시작하여 현재 날짜의 모든 데이터를 정확히 한 번만 추가하고 차트에서 이전에 그린 모든 선을 삭제하지 않으며 중복되지 않습니다. 이 모든 것을 통해 활성 창이 현재 있고 다른 활성 창(즉, 실행 중인 위치)에만 해당 날짜의 모든 세그먼트와 범위를 선택하고 표시합니다(즉, 쌍을 열고 표시기가 모든 세그먼트와 범위를 그렸습니다. 현재 일과 진정 등 쌍).

예를 들어 표시기 탭이 입력 매개변수 와 같은 모양이어야 합니다 .

변수_________값
Funtik_______//--일반 설정--//
그리기 TF_______true
그리기 TN ____true
그리기 AB1______참
그리기 AB2______거짓
텍스트 비문의 색상 _______검정
서명 글꼴____Arial
텍스트 캡션의 글꼴 크기 ________9
라인 색상 TF _________________
라인 유형 TF _______________
선 색상 TN _________________
라인 유형 TN _______________
범위 색상 AB1__________
범위 색상 AB2__________
파일 폴링 빈도(초) ______2
파일 이름 _______________5.csv

제가 직접 써보려고 했는데 잘 안되네요 쉬울 것 같아도 (글쎄요, 저는 휴머니스트인데 어떡하죠....) 물에 빠진 남자 좀 도와주세요!!!!!!! !


 //+------------------------------------------------------------------+
//|                                                        Funtik.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net"
 
#property indicator_chart_window
//---- input parameters
extern string     Funtik= "5.csv" ;
//+------------------------------------------------------------------+
//| extern variables                                       |
//+------------------------------------------------------------------+
extern    bool     РисоватьTB = false       ;
extern    bool     РисоватьTN = false       ;
extern    bool     РисоватьTF = false       ;
extern    bool     РисоватьAB1 = false      ;
extern    bool     РисоватьAB2 = false      ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars= IndicatorCounted ();
//----
       int handle,sst= 1 ;
     double   NameCena;
     string NameF ,NameTi,NameFT;
       bool h1;
      
   while (sst> 0 )
                 {
   handle= FileOpen (Funtik, FILE_CSV | FILE_READ , ';' );
 //  Comment ("Файл ",Funtik,"открыт");
   if (handle>= 0 )
    {
     NameF= FileReadString (handle);           // Читается наименование бумаги
     NameTi= FileReadString (handle);           // Читается первая котировка и подставляется в начало первого отрезка линии или диапазона
     NameCena= FileReadNumber (handle);         // Читается цена последней котировки для первого отрезка линии или диапазона
     NameFT= FileReadString (handle);           // Читается последняя котировка для диапазона
     
     Alert (NameF, " " ,NameTi, " " ,NameCena, " " ,NameFT);
       if ( FileIsEnding (h1))
       {
     FileClose (h1);
     return ( false );
     sst= 0 ;
       }
    }
               }
     FileClose (handle);   
 
   //fComment(Funtik);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

 

안녕하세요!

제발 도와주세요. 오류 추적을 찾습니다. 프로그램!!!

//+----------------------------------------------- --------------------+
//| test.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+----------------------------------------------- --------------------+
#재산권 "365_MA"
#속성 링크 "https://www.mql5.com"
#속성 버전 "1.00"
#속성엄격

외부 정수 Period_MA = 365; //MA 기간 1
외부 이중 델타 = 0.0010; // 주문을 여는 거리

문자열 기호; //거래 상품의 이름
//int 합계; //주문수

//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
ObjectDelete("Obj_Label");
ObjectDelete("Obj_Label2");
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{



이중 상금 = 입찰; //현재 가격
이중 CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); // 이동 평균
이중 Price2MA = 가격 - CurrMAValue; // MA에 대한 가격까지의 거리
날짜/시간 NextClose = 시간(0) + 기간()*60*2; //닫을 시간
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; //닫는 시간(분)

//int 오류;



//차트의 정보 텍스트 업데이트

ObjectSetText("Obj_Label", "TF" + Period() + ", " + DoubleToStr(price, 4) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0 ], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + "(" + MinutesToNextClose + " min)", 10,
ObjectSetText("Obj_Label2", "Delta" + DoubleToStr(Delta,4) + ", MA 값 " + DoubleToStr(CurrMAValue, 4) + ", MA까지의 거리 " + DoubleToStr(Price2MA, 4), 10, "Arial", 짙은 녹색);
//가격 분석 및 알림

if ((MathAbs(Price2MA) < Delta) && // MA까지의 거리가 delta보다 작은 경우
(Price > CurrMAValue) && // 가격이 MA보다 높음
(Open(0) > CurrMAValue+Delta)) // 현재 캔들은 MA+Delta보다 높게 열렸습니다.
(
경고("가격이 위에서 MA에 접근했습니다");
)

if ((MathAbs(Price2MA) < Delta) && // MA까지의 거리가 delta보다 작은 경우
(price < CurrMAValue) && // 그리고 가격이 MA보다 낮습니다.
(Open(0) < CurrMAValue-Delta)) // 현재 캔들은 MA-델타보다 낮게 열렸습니다.
(

경고("가격이 아래에서 MA에 접근했습니다");
)

리턴(0);


//+----------------------------------------------- --------------------+

컴파일 후 다음 실수

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Куда исчезли "Сообщения"? У меня в профиле исчез раздел...
파일:
Error.jpg  60 kb
 
berkley75 :

안녕하세요!

제발 도와주세요. 오류 추적을 찾습니다. 프로그램!!!


컴파일 후 다음 실수

 //+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern int     Period_MA = 365 ;   //Период МА 1
extern double Delta = 0.0010 ;   //На каком расстоянии открывать ордер

string Symb;                   //Название торгового инструмента
//int Total;                  //количество ордеров

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
 {
//----
 
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
 {
//----
   ObjectDelete ( "Obj_Label" );
   ObjectDelete ( "Obj_Label2" );
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
   
 

double prise = Bid ;                                                             //текущая цена
double CurrMAValue = iMA (Symb, Period (),Period_MA, 0 ,Mode_EMA, PRICE_CLOSE , 0 ); //значение скользящей средней
double Price2MA = price - CurrMAValue;                                           //расстояние о МА до цены
datetime NextClose = Time ( 0 ) + Period ()* 60 * 2 ;                                   //время до закрытия
int MinutesToNextClose = (NextClose - TimeCurrent ())/ 60 + 1 ;                     //время до закрытия в минутах

//int err;



//обновление текст информации на графике

ObjectSetText ( "Obj_Label" , "ТФ" + Period () + ", " + DoubleToStr (price, 4 ) + ", тик " + TimeToStr ( TimeCurrent (), TIME_SECONDS ) + ", O@" + TimeToStr ( Time [ 0 ], TIME_MINUTES ) + ", NC@" + TimeToStr (NextClose, TIME_MINUTES ) + " (" + MinutesToNextClose + " min)" , 10 ,
ObjectSetText ( "Obj_Label2" , "Дельта " + DoubleToStr (Delta, 4 ) + ", знач МА " + DoubleToStr (CurrMAValue, 4 ) + ", расст до МА " + DoubleToStr (Price2MA, 4 ), 10 , "Arial" , DarkGreen );
//анализ цены и выдача алертов

if (( MathAbs (Price2MA) < Delta) &&   // если расстоание до МА меньше дельты
   (Price > CurrMAValue) &&           // и цена выше МА
   ( Open ( 0 ) > CurrMAValue+Delta))     // и текущая свеча открылась выше, чем МА+дельта
( 
   Alert ( "Цена подощла к МА сверху" );
)

if (( MathAbs (Price2MA) < Delta) &&   // если расстояние до МА меньше дельты
   (price < CurrMAValue) &&           // и цена ниже МА
   ( Open ( 0 ) < CurrMAValue-Delta))     // и текущая свеча открылась ниже, чем МА-дельта
( 

   Alert ( "Цена подошла к МА снизу" );
)

   return ( 0 );
}
   
   
//+------------------------------------------------------------------+


잊혀진 중괄호

 
실수로 볼륨(로트)의 음수 값이 설정된 경우 Expert Advisor에서 FreeMarginCheck 기능 오류에 대한 잘못된 로트 금액을 수정하는 방법을 알려주십시오. 테스터에서 오류 메시지 없이 잘못된 로트에 대한 메시지를 받으려면
 
Roman Sharanov :

그런 질문, 나는 내 칠면조에 지그재그를 통합해야합니다 (이제는 핸들로 간주됩니다)

사실 내 칠면조는 OnCalculate()를 전혀 사용하지 않으며 모든 것이 OnChartEvent()에 있습니다.

지그재그로 작동하게 할 수 있으므로 rate_total 및 prev_calculated를 어디에서 가져와 계산할 수 있습니까?

rate_total은 차트의 막대 수입니다 . Bars 함수를 사용하여 결정됩니다.

prev_calculated - 전역적으로(또는 정적으로) 선언하고 현재 반복에서 실제로 계산된 막대 수를 기록하여 아날로그를 직접 만듭니다. 즉, 표시기 값을 성공적으로 계산한 후에는 현재 막대 수를 입력해야 합니다. 계산에 실패하면 다음 반복에서 기록의 각 막대에 표시기 값을 다시 계산하기 위해 재설정하는 것이 좋습니다.

 

Re: 알렉세우 페도토프

중괄호 란 무엇입니까

 
berkley75 :

Re: 알렉세우 페도토프

중괄호 란 무엇입니까

괄호 안은 sin(30) 함수의 인수
정사각형 배열 인덱스 x[25]
무효 시작()
{
중괄호 문 블록
}
 
안녕하세요! "시장 감시" 창에서 특정 기호를 프로그래밍 방식으로 표시/제거하는 방법을 알려주세요. 감사합니다!
 
STARIJ :
괄호 안은 sin(30) 함수의 인수
정사각형 배열 인덱스 x[25]
무효 시작()
{
중괄호 문 블록
}
감사합니다. 여전히 컴파일되지 않습니다! 마지막에 중괄호를 넣어도 고양이. 눈치챘다!!!