초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 246 1...239240241242243244245246247248249250251252253...1503 새 코멘트 olegin038 2014.05.12 15:21 #2451 안녕하세요. 아마도 많은 사람들에게 내 질문은 엄청나게 어리석은 것처럼 보일 것입니다. 죄송합니다. 나는 여전히 이 문제에 있어서 찻주전자입니다. 문제가 무엇인지 판단할 수 없습니다. MQL5\Files\date.txt 폴더에 텍스트 파일을 생성했는데 열 수 없습니다. 오류 5004를 씁니다. 어렵지 않다면 도와주세요. #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" int OnInit () { return ( 0 ); } void OnDeinit ( const int reason) { return ; } void OnTick () { ResetLastError (); int Handle= FileOpen ( "date.txt" , FILE_CSV | FILE_READ | FILE_WRITE | FILE_COMMON , ';' ); if (Handle==- 1 ) { Print ( "Файл не открыт, ошибка: " , GetLastError ()); } return ; } Artem Temnikov 2014.05.12 15:32 #2452 olegin038 : 안녕하세요. 아마도 많은 사람들에게 내 질문은 엄청나게 어리석은 것처럼 보일 것입니다. 죄송합니다. 나는 여전히 이 문제에 있어서 찻주전자입니다. 문제가 무엇인지 판단할 수 없습니다. MQL5\Files\date.txt 폴더에 텍스트 파일을 생성했는데 열 수 없습니다. 오류 5004를 씁니다. 어렵지 않다면 도와주세요. 파일이 MT5 클라이언트 터미널의 공유 폴더에 없으면(귀하의 경우에는) 그런 다음 FILE_COMMON 플래그를 제거해야 합니다. void OnTick () { ResetLastError (); int Handle= FileOpen ( "date.txt" , FILE_CSV | FILE_READ | FILE_WRITE , ';' ); if (Handle==- 1 ) { Print ( "Файл не открыт, ошибка: " , GetLastError ()); } return ; } olegin038 2014.05.12 15:48 #2453 Fleder : 파일이 MT5 클라이언트 터미널의 공유 폴더에 없으면(귀하의 경우에는) 그런 다음 FILE_COMMON 플래그를 제거해야 합니다. 도와주셔서 감사합니다. 하지만 안타깝게도 작동하지 않았습니다. 나는 플래그로 많은 옵션을 시도했습니다. 또한 오류 5004를 작성합니다. 다른 시도를 하시겠습니까? Artem Temnikov 2014.05.12 15:51 #2454 olegin038 : 도와주셔서 감사합니다. 하지만 안타깝게도 작동하지 않았습니다. 나는 플래그로 많은 옵션을 시도했습니다. 또한 그는 오류 5004를 작성합니다. 시도할 다른 것이 있습니까? 텍스트로 열어보십시오. void OnTick () { ResetLastError (); int Handle= FileOpen ( "date.txt" , FILE_TXT | FILE_READ | FILE_WRITE ); if (Handle==- 1 ) { Print ( "Файл не открыт, ошибка: " , GetLastError ()); } return ; } olegin038 2014.05.12 15:54 #2455 Fleder : 텍스트로 열어보십시오. 그것도 작동하지 않았다. 나는 이전에 파일 작업을 한 적이 없습니다. 여기에 추가로 작성해야 할 사항이 있습니까? Artem Temnikov 2014.05.12 15:57 #2456 olegin038 : 그것도 작동하지 않았다. 나는 이전에 파일 작업을 한 적이 없습니다. 여기에 추가로 작성해야 할 사항이 있습니까? 예, 파일을 닫아야 합니다. void OnTick () { ResetLastError (); int Handle= FileOpen ( "date.txt" , FILE_CSV | FILE_READ | FILE_WRITE , ';' ); if (Handle==- 1 ) { Print ( "Файл не открыт, ошибка: " , GetLastError ()); } FileClose (Handle); return ; } olegin038 2014.05.12 16:01 #2457 Fleder : 예, 파일을 닫아야 합니다. 정말 감사합니다! 정말 도움이 되었습니다. 더 이상 오류가 발생하지 않습니다. Abramboss 2014.05.12 19:56 #2458 개인 도서관의 저명한 작가들의 강의를 공유합니다. Erin, Bazhenov, Strmzh, Lukyanov, Cheryomushkin, Gerchik, Alex Million 등 이 저자의 거의 모든 과정. 묻다. Dmitriy Skub 2014.05.13 21:47 #2459 Abramboss : 개인 도서관의 저명한 작가들의 강의를 공유합니다. Erin, Bazhenov, Strmzh, Lukyanov, Cheryomushkin, Gerchik, Alex Million 등 이 저자의 거의 모든 과정. 묻다. 무료로 공유하시겠습니까? 게르치크에 관심이 있습니다. Евгений 2014.05.14 17:21 #2460 안녕하세요! 잘 알려진 CrossArbitr 표시기에 대한 도움이 필요합니다. 물론 그 코드는 내 것이 아니다. 출력하지 않는 정보가 필요했습니다. 그래서 순서대로. 추가된 변수 double n, m; "\n합성과 실제의 입찰가 차이 =", n=(CalcBid-Bid), "\, 합성 및 실제 ASK 차이 =", m=(CalcAsk-Ask), "\n총계 =" (m - n) <---- 결과적으로 그는 이 괄호에서 마이너스로 맹세합니다(일부 오퍼레이터 예상). 내가 뭘 잘못하고 있는지 누가 말해 줄 수 있니? //+------------------------------------------------------------------+ //| CrossArbitr.mq4 | //| Scriptong | //| | //+------------------------------------------------------------------+ #property copyright "Scriptong" #property link "" #property indicator_chart_window //---- input parameters extern bool ShowBid= false ; extern bool ShowAsk= false ; extern color BidColor = Lime; extern color AskColor = Yellow; extern int AlarmIfPointDifference = 10 ; extern string AlarmFile = "wait.wav" ; bool Activate = False; string FP, SP; double Tick; int WayForCross; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators string S = Symbol (); if ( StringFind (S, "USD" , 0 ) != - 1 ) { Comment ( "Индикатор работает только с кроссовыми парами (GBPJPY, EURJPY, EURGBP и т. д)!" ); return ( 0 ); } if ( StringLen (S) != 6 ) { Comment ( "Индикатор работает только с валютными парами, у которых название состоит из шести символов!" ); return ( 0 ); } // Поиск первой валютной пары кросса FP = StringSubstr (S, 0 , 3 )+ "USD" ; MarketInfo(FP, MODE_BID); if ( GetLastError () > 0 ) { FP = "USD" + StringSubstr (S, 0 , 3 ); MarketInfo(FP, MODE_BID); if ( GetLastError () > 0 ) { Comment ( "Невозможно найти инструмент " , FP, " или " , StringSubstr (S, 0 , 3 )+ "USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор." ); return ( 0 ); } } // -------------------------------------- // "Создание" второй валютной пары кросса SP = "USD" + StringSubstr (S, 3 , 3 ); MarketInfo(SP, MODE_BID); if ( GetLastError () > 0 ) { SP = StringSubstr (S, 3 , 3 )+ "USD" ; MarketInfo(SP, MODE_BID); if ( GetLastError () > 0 ) { Comment ( "Невозможно найти инструмент " , SP, " или " , StringSubstr (S, 3 , 3 )+ "USD. Необходимо добавить его в Обзоре рынка и перезапустить индикатор." ); return ( 0 ); } } // -------------------------------------- // Определение пути синтеза кросса if ( StringFind (FP, "USD" ) == 3 && StringFind (SP, "USD" ) == 0 ) WayForCross = 1 ; if ( StringFind (FP, "USD" ) == 0 && StringFind (SP, "USD" ) == 0 ) WayForCross = 2 ; if ( StringFind (FP, "USD" ) == 3 && StringFind (SP, "USD" ) == 3 ) WayForCross = 3 ; if ( StringFind (FP, "USD" ) == 0 && StringFind (SP, "USD" ) == 3 ) WayForCross = 4 ; // ------------------------------- Tick = MarketInfo( Symbol (), MODE_TICKSIZE); Activate = True; //---- return ( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Comment ( "" ); if ( ObjectFind ( "CrossBid" ) == 0 ) ObjectDelete ( "CrossBid" ); if ( ObjectFind ( "CrossAsk" ) == 0 ) ObjectDelete ( "CrossAsk" ); //---- return ( 0 ); } //+------------------------------------------------------------------+ //| Приведение значений к точности одного тика | //+------------------------------------------------------------------+ double ND( double A) { return ( NormalizeDouble (A, Digits )); } //+------------------------------------------------------------------+ //| Расчет значения синтетического бида | //+------------------------------------------------------------------+ double CalcBidWayForCross() { switch (WayForCross) { case 1 : return (ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_BID))); case 2 : return (ND(MarketInfo(SP, MODE_BID)/MarketInfo(FP, MODE_ASK))); case 3 : return (ND(MarketInfo(FP, MODE_BID)/MarketInfo(SP, MODE_ASK))); case 4 : return ( 1 /(ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_BID)))); } } //+------------------------------------------------------------------+ //| Расчет значения синтетического аска | //+------------------------------------------------------------------+ double CalcAskWayForCross() { switch (WayForCross) { case 1 : return (ND(MarketInfo(FP, MODE_ASK)*MarketInfo(SP, MODE_ASK))); case 2 : return (ND(MarketInfo(SP, MODE_ASK)/MarketInfo(FP, MODE_BID))); case 3 : return (ND(MarketInfo(FP, MODE_ASK)/MarketInfo(SP, MODE_BID))); case 4 : return ( 1 /(ND(MarketInfo(FP, MODE_BID)*MarketInfo(SP, MODE_ASK)))); } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- if (!Activate) return ( 0 ); // Расчет синтетических Bid и Ask double CalcBid = CalcBidWayForCross(); RefreshRates(); double CalcAsk = CalcAskWayForCross(); double n, m; // ------------------------------- // Рисуем уровень синтетического Bid if (ShowBid) { if ( ObjectFind ( "CrossBid" ) == - 1 ) { ObjectCreate ( "CrossBid" , OBJ_HLINE , 0 , 0 , CalcBid); ObjectSet( "CrossBid" , OBJPROP_COLOR , BidColor); ObjectSet( "CrossBid" , OBJPROP_STYLE , STYLE_DOT ); } else if (! ObjectMove ( "CrossBid" , 0 , 1 , CalcBid)) Print ( "Ошибка перемещения №" , GetLastError ()); } // ---------------------------------- // Рисуем уровень синтетического Ask if (ShowAsk) { if ( ObjectFind ( "CrossAsk" ) == - 1 ) { ObjectCreate ( "CrossAsk" , OBJ_HLINE , 0 , 0 , CalcAsk); ObjectSet( "CrossAsk" , OBJPROP_COLOR , AskColor); ObjectSet( "CrossAsk" , OBJPROP_STYLE , STYLE_DOT ); } else ObjectMove ( "CrossAsk" , 0 , 1 , CalcAsk); } // ---------------------------------- Comment ( "Реальный BID = " , DoubleToStr(Bid, Digits ), ", реальный ASK = " , DoubleToStr(Ask, Digits ), "\nСинтетик BID = " , DoubleToStr(CalcBid, Digits ), ", синтетик ASK = " , DoubleToStr(CalcAsk, Digits ), "\nРазница BID Синтетика и Реального =" , n=(CalcBid-Bid), "\, Разница ASK Синтетика и Реального =" , m=(CalcAsk-Ask), "\nИтог =" (m - n) ); // Выдаем звуковой сигнал о превышении минимальной разности if (ND( MathAbs (CalcBid-Bid)) >= ND(AlarmIfPointDifference* Point )) PlaySound (AlarmFile); // -------------------------------------------------------- //---- return ( 0 ); } //+------------------------------------------------------------------+ 코딩하는 방법? 이론부터 실습까지 포트폴리오: PriceChannelExpert 및 기타 1...239240241242243244245246247248249250251252253...1503 새 코멘트 사유: 취소 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
안녕하세요. 아마도 많은 사람들에게 내 질문은 엄청나게 어리석은 것처럼 보일 것입니다. 죄송합니다. 나는 여전히 이 문제에 있어서 찻주전자입니다. 문제가 무엇인지 판단할 수 없습니다.
MQL5\Files\date.txt 폴더에 텍스트 파일을 생성했는데 열 수 없습니다. 오류 5004를 씁니다. 어렵지 않다면 도와주세요.
안녕하세요. 아마도 많은 사람들에게 내 질문은 엄청나게 어리석은 것처럼 보일 것입니다. 죄송합니다. 나는 여전히 이 문제에 있어서 찻주전자입니다. 문제가 무엇인지 판단할 수 없습니다.
MQL5\Files\date.txt 폴더에 텍스트 파일을 생성했는데 열 수 없습니다. 오류 5004를 씁니다. 어렵지 않다면 도와주세요.
파일이 MT5 클라이언트 터미널의 공유 폴더에 없으면(귀하의 경우에는)
그런 다음 FILE_COMMON 플래그를 제거해야 합니다.
파일이 MT5 클라이언트 터미널의 공유 폴더에 없으면(귀하의 경우에는)
그런 다음 FILE_COMMON 플래그를 제거해야 합니다.
도와주셔서 감사합니다. 하지만 안타깝게도 작동하지 않았습니다. 나는 플래그로 많은 옵션을 시도했습니다. 또한 그는 오류 5004를 작성합니다. 시도할 다른 것이 있습니까?
텍스트로 열어보십시오.
텍스트로 열어보십시오.
그것도 작동하지 않았다. 나는 이전에 파일 작업을 한 적이 없습니다. 여기에 추가로 작성해야 할 사항이 있습니까?
예, 파일을 닫아야 합니다.
예, 파일을 닫아야 합니다.
개인 도서관의 저명한 작가들의 강의를 공유합니다.
안녕하세요! 잘 알려진 CrossArbitr 표시기에 대한 도움이 필요합니다. 물론 그 코드는 내 것이 아니다. 출력하지 않는 정보가 필요했습니다. 그래서 순서대로.
추가된 변수 double n, m;
"\n합성과 실제의 입찰가 차이 =", n=(CalcBid-Bid),
"\, 합성 및 실제 ASK 차이 =", m=(CalcAsk-Ask),
"\n총계 =" (m - n) <----
결과적으로 그는 이 괄호에서 마이너스로 맹세합니다(일부 오퍼레이터 예상). 내가 뭘 잘못하고 있는지 누가 말해 줄 수 있니?