[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 406 1...399400401402403404405406407408409410411412413...631 新しいコメント Ruslan1 2012.09.30 12:23 #4051 Roman.: 1.同じく。 2.Googleの使い方を学ぼう! 本当にありがとうございました。効果があったようです。 Сергей 2012.09.30 13:28 #4052 Vinin: エラーの対処はされましたか? いくつか条件があります。 1.2つ目の楽器は、マーケット概観で開いている必要があります。さらに言えば、適切なタイムフレームのチャートが開かれていれば(必ずしもそうではありませんが) 2)4066エラーがないこと。 3) 問題があると思われる部分だけでなく、コード全体を審査に出すこと。 多くのエラーがあります。コードセクションをお渡ししましたが、これがないとコンパイルが成功しないからです。//+------------------------------------------------------------------+ //| PriseRatio.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ //для часовиков aud/usd (прикрепляется) и nzd/usd #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 DarkViolet //--- input parameters extern int ProcessDeep=1000; //--- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //----расчет отношения цен double a, b; int i; double Ratio(double a, double b) {a = iClose(NULL, PERIOD_H1, i); b = iClose("NZDUSD",PERIOD_H1,i); return (a/b); } //----оптимизация int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(limit>ProcessDeep) limit=ProcessDeep; for(int i=0;i<limit;i++) { ExtMapBuffer1[i]=Ratio(а,b); } //---- return(0); } Victor Nikolaev 2012.09.30 13:43 #4053 eternal2: コードの断片を示しましたが、これはなくてもコンパイルは成功するからです。 以下、コードの全文を示します。 MQL4が関数のネストをサポートしていると判断した理由は何ですか? //+------------------------------------------------------------------+ //| PriseRatio.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 DarkViolet //--- input parameters extern int ProcessDeep=1000; //--- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; if(limit>ProcessDeep) limit=ProcessDeep; for(int i=0;i<limit;i++) { ExtMapBuffer1[i]=Ratio("NZDUSD",i); } //---- return(0); } double Ratio(string lsSymbol, int lnPos) { double res=0; int shift=iBarShift(lsSymbol, 0, Time[lnPos]); double a = iClose(NULL, 0, lnPos); double b = iClose(lsSymbol,0,shift); if (b>0) res=a/b; return (res); } Сергей 2012.09.30 13:56 #4054 Vinin: MQL4が関数のネストをサポートしていると考える理由は何ですか? しかし、どの関数がネストされているのか、また、あなたのコードについて説明してください。 Рустам 2012.09.30 13:58 #4055 //+------------------------------------------------------------------+ //| _Symbol.mq4 | //| Copyright © 2012. XrustSolution. mail:xrustx@gmail.com | //| https://www.youtube.com/user/opmlv http://forexrust.info | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012. XrustSolution. mail:xrustx@gmail.com" #property link "https://www.youtube.com/user/opmlv http://forexrust.info" //+------------------------------------------------------------------+ //| Super Global Variables | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 4 #property indicator_width1 0 #property indicator_width2 0 //+------------------------------------------------------------------+ //| Extern Variables | //+------------------------------------------------------------------+ extern color Chart_Color = Teal ; extern string SYMBOL = "USDCHF" ; extern bool Mirror = false ; extern bool Sinshronise_Daily_Weekly = true ; extern double Scale_Multyplier = 1 ; extern int Bars_Back = 2000 ; //+------------------------------------------------------------------+ //| Defines & Global variavles | //+------------------------------------------------------------------+ #define empty EMPTY_VALUE //+------------------------------------------------------------------+ string _sy; int _per; //--- buffers double hi[]; double lo[]; double op[]; double cl[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void init(){_sy = StringUpper(SYMBOL); if(StringLen(_sy)<4){_sy = Symbol();} IndicatorShortName(_sy); IndicatorDigits(MarketInfo(_sy,MODE_DIGITS)); if(Sinshronise_Daily_Weekly){ _per = PERIOD_D1; }else{ _per = PERIOD_W1; } if(Scale_Multyplier==0){ Scale_Multyplier=1; } if(Scale_Multyplier > 1000){ Scale_Multyplier=1000; } //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,0,Chart_Color); SetIndexBuffer(0,hi); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexLabel(0,_sy); SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,0,Chart_Color); SetIndexBuffer(1,lo); SetIndexEmptyValue(1,EMPTY_VALUE); SetIndexLabel(1,_sy); SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Chart_Color); SetIndexBuffer(2,op); SetIndexEmptyValue(2,EMPTY_VALUE); SetIndexLabel(2,_sy); SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,1,Chart_Color); SetIndexBuffer(3,cl); SetIndexEmptyValue(3,EMPTY_VALUE); SetIndexLabel(3,_sy); //---- return;} //+------------------------------------------------------------------+ void deinit(){return;} //+------------------------------------------------------------------+ void start(){ //---- Стандартный набор переменых static int pretime=0; static double prerp = 0; int i, ii = 0, counted = IndicatorCounted(); if (counted > 0) counted--; int limit = Bars - counted; int per = Period(); string sy = Symbol(); string txt=""; //---- Предварительные расчеты и объявления double op_1,op_2,_hi,_lo,_op,_cl; double ss = iOpen(sy,_per,0)/iOpen(_sy,_per,0); if(ss<1){ss=ss*MathPow(10,(Digits-MarketInfo(_sy,MODE_DIGITS)));} double sm, mno = (Point/MarketInfo(_sy,MODE_POINT))*ss*Scale_Multyplier; if(Bars_Back!=0){limit=Bars_Back;} if(limit < 5){limit=5;} //---- Масштабирование ширины гистограммы int width = GetChartScale(); SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,0); SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,0); SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,width); SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,width); //---- Основной расчет индикатора for(i=0;i<limit;i++){ //---- Пропускаем отсутвующие бары (синхронизация) while(iBarShift(_sy,per,iTime(sy,per,ii),true)<0){ ii++; continue; } //---- Вычисляем смещение для точки синхронизации цены op_1 = iOpen(sy ,_per,iBarShift(sy ,_per,iTime(sy,per,ii))); op_2 = iOpen(_sy,_per,iBarShift(_sy,_per,iTime(_sy,per,i))); sm = op_1 - op_2 * mno; //---- Читаем данные символа _hi = sm + iHigh(_sy,per,i)*mno; _lo = sm + iLow(_sy,per,i)*mno; _op = sm + iOpen(_sy,per,i)*mno; _cl = sm + iClose(_sy,per,i)*mno; //---- Переворачиваем чарт if(Mirror){ _hi += 2 * (op_1-_hi); _lo += 2 * (op_1-_lo); _op += 2 * (op_1-_op); _cl += 2 * (op_1-_cl); } //---- Отображаем график hi[ii] = _hi; lo[ii] = _lo; op[ii] = _op; cl[ii] = _cl; //---- Обработка дожи if(op[ii]==lo[ii]){op[ii]+=Point;} ii++; } //---- return;} //+------------------------------------------------------------------+ //| includes | //+------------------------------------------------------------------+ #import "user32.dll" bool GetWindowRect(int h, int& pos[4]); #import //+------------------------------------------------------------------+ //| Function : int GetChartScale()[1,2,4,6,13] | //| Copyright © 2012, XrustSolution. mail:xrustx@gmail.com | //| https://www.youtube.com/user/opmlv http://forexrust.info | //+------------------------------------------------------------------+ //| Description: Return bar width in current chart scale | //+------------------------------------------------------------------+ int GetChartScale(){ int h = WindowHandle(Symbol(), Period()); int rect[4]; if(h==0) return(1); GetWindowRect(h, rect); int wW = rect[2] - rect[0]; // ширина окна int bpc = WindowBarsPerChart(); if(bpc==0) return(1); int scale = MathFloor((wW-48)/bpc); switch(scale){ case 1 : return(0); case 2 : return(1); case 4 : return(2); case 8 : return(4); case 16 : return(7); case 32 : return(14); default : return(1); } return(1); } //+------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает строку в ВЕРХНЕМ регистре | //+------------------------------------------------------------------+ string StringUpper(string s) { int c, i, k=StringLen(s), n; for (i=0; i<k; i++) { n=0; c=StringGetChar(s, i); if (c>96 && c<123) n=c-32; // a-z -> A-Z if (c>223 && c<256) n=c-32; // а-я -> А-Я if (c==184) n=168; // ё -> Ё if (n>0) s=StringSetChar(s, i, n); } return(s); } //+------------------------------------------------------------------+ Сергей 2012.09.30 14:05 #4056 FAQ: 私は初心者ですが、ロシア語を話せますか? コードの一部についてコメントをお願いします。 double Ratio(string lsSymbol, int lnPos) { double res=0; int shift=iBarShift(lsSymbol, 0, Time[lnPos]); double a = iClose(NULL, 0, lnPos); double b = iClose(lsSymbol,0,shift); if (b>0) res=a/b; return (res); 削除済み 2012.09.30 14:23 #4057 ごあいさつ コードのどこがおかしいか教えてください...保留中の注文の 価格にエラーがあります。何が問題なのか理解できません。 ファイル: thsayn.mq4 15 kb Lowech 2012.09.30 16:40 #4058 こんにちは "私はEAにカスタム関数を追加することはできません!誰かがカスタム関数の追加方法と一般的な方法を読む場所を知っていれば、書いてください!"私はEAにカスタム関数を追加することはできません!"私はEAにカスタム関数を追加することはできません。 --- 2012.09.30 16:41 #4059 lowech: こんにちは "私はEAにカスタム関数を追加することはできません!誰かがカスタム関数の追加方法と一般的な方法を読む場所を知っていれば、書いてください!"私はEAにカスタム関数を追加することはできません!"私はEAにカスタム関数を追加することはできません。 助けて F1 ! Рустам 2012.09.30 16:42 #4060 ドキュメンテーション 教科書 1...399400401402403404405406407408409410411412413...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1.同じく。
2.Googleの使い方を学ぼう!
本当にありがとうございました。効果があったようです。
エラーの対処はされましたか?
いくつか条件があります。
1.2つ目の楽器は、マーケット概観で開いている必要があります。さらに言えば、適切なタイムフレームのチャートが開かれていれば(必ずしもそうではありませんが)
2)4066エラーがないこと。
3) 問題があると思われる部分だけでなく、コード全体を審査に出すこと。
コードの断片を示しましたが、これはなくてもコンパイルは成功するからです。 以下、コードの全文を示します。
MQL4が関数のネストをサポートしていると判断した理由は何ですか?
MQL4が関数のネストをサポートしていると考える理由は何ですか?
私は初心者ですが、ロシア語を話せますか?
コードの一部についてコメントをお願いします。
ごあいさつ
コードのどこがおかしいか教えてください...保留中の注文の 価格にエラーがあります。何が問題なのか理解できません。
こんにちは "私はEAにカスタム関数を追加することはできません!誰かがカスタム関数の追加方法と一般的な方法を読む場所を知っていれば、書いてください!"私はEAにカスタム関数を追加することはできません!"私はEAにカスタム関数を追加することはできません。
助けて F1 !
ドキュメンテーション
教科書