[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 132 1...125126127128129130131132133134135136137138139...432 新しいコメント Viktar Dzemikhau 2013.02.03 09:19 #1311 Roman.:IMHOは、複雑ではなく、非常に簡単に「指示」または「送信」することができます。 まあ確かに提案するよりも「送る」すなわち「send」の方が簡単ですからね。そして実際、教科書で私をつつくように何も聞いていないのです。一箇所に重複して書いたのは事実ですが、本質は変わりません。artmedia70 です。最後に、あなたがやりたいことを具体的に教えてください...。例:MAK so-and-soが上昇しており、MAK so-and-soを上回り、価格がMAK so-and-soの下/上のある時点で、それが本当 であれば、ある距離で保留注文を出します。大まかなアルゴリズムをお伝えします。このようなコードの断片は、文脈から切り離されているため、正しい方向に導くことは困難です。やはり課題は小学5年生向け(大げさ)。ここでは、テスト版のコードを添付して、私の投稿でも公開しています。//+-----------------------------------------------------------------------------------+ //| test_Ma.mq4 | //| hoz | //| | //+-----------------------------------------------------------------------------------+ #property copyright "hoz" #property link "" extern string ___H0 = " ___________ Параметры МА ____________ "; extern int i_TF = 0, i_fastMaPeriod = 10, i_slowMaPeriod = 21; extern string ___H1 = " _____ Параметры ордера _______"; extern int i_magic = 3333021; extern double i_thresholdFromMa = 5; // Отступ от МА // Машечки double fastMa, slowMa; double pt; // Переменные рыночного окружения double g_spread, g_stopLevel, g_tickSize; // Идентификаторы положений машек #define MA_DIRECT_TO_UP 0 // Машки направлены вверх #define MA_DIRECT_TO_DOWN 1 // Машки направлены вниз #define MA_DIRECT_TO_NONE -1 // Машки во флете #define SIGNAL_BUY 0 // Сигнал на покупку #define SIGNAL_SELL 1 // Сигнал на продажу #define SIGNAL_NO -1 // Сигнала нет //+-------------------------------------------------------------------------------------+ //| Функция иницилизации | //+-------------------------------------------------------------------------------------+ int init() { GetMarketInfo(); if (Digits == 2 || Digits == 4) pt = Point; if (Digits == 1 || Digits == 3 || Digits == 5) pt = Point * 10; if (Digits == 6) pt = Point * 100; if (Digits == 7) pt = Point * 1000; return (0); } //+-------------------------------------------------------------------------------------+ //| Функция деиницилизации | //+-------------------------------------------------------------------------------------+ int deinit() { //---- //---- return (0); } //+-------------------------------------------------------------------------------------+ //| Сбор рыночных данных | //+-------------------------------------------------------------------------------------+ void GetMarketInfo() { g_spread = MarketInfo(Symbol(),MODE_SPREAD); g_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL); g_tickSize = MarketInfo(Symbol(),MODE_TICKSIZE); } //+-------------------------------------------------------------------------------------+ //| Функция нормализации | //+-------------------------------------------------------------------------------------+ double ND(double A) { return (NormalizeDouble(A, Digits)); } //+-------------------------------------------------------------------------------------+ //| Открытие длинной позиции | //+-------------------------------------------------------------------------------------+ bool OpenBuy(double fastMa, double slowMa) { int ticket = -1; if ((fastMa + i_thresholdFromMa * pt) > Ask) // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0); if (ticket > 0) return (true); } //+-------------------------------------------------------------------------------------+ //| Открытие короткой позиции | //+-------------------------------------------------------------------------------------+ bool OpenSell(double fastMa, double slowMa) { int ticket = -1; if ((fastMa - i_thresholdFromMa * pt) < Bid) // Проверка что цена открытия ниже Bid, т.к. у нас вход отложенником ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(fastMa - i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0); if (ticket > 0) return (true); } //+-------------------------------------------------------------------------------------+ //| Получаем относительное положение машек | //+-------------------------------------------------------------------------------------+ int GetStateMa(double fastMa, double slowMa) { if (fastMa > slowMa) // Если условия выполнены, то.. return (MA_DIRECT_TO_UP); // ..машки направлены вниз if (fastMa < slowMa) // Если условия выполнены, то.. return (MA_DIRECT_TO_DOWN); // машки направлены вверх return (MA_DIRECT_TO_NONE); // Машки не имеют выраженного направления } //+-------------------------------------------------------------------------------------+ //| Открытие позиций | //+-------------------------------------------------------------------------------------+ bool Trade(int signal) { if (signal == SIGNAL_BUY) // Если сигнал на покупку.. if (!OpenBuy(fastMa, slowMa)) // ..покупаем return(false); if (signal == SIGNAL_SELL) // Если сигнал на продажу.. if (!OpenSell(fastMa, slowMa)) // ..продаём return(false); return (true); } //+-------------------------------------------------------------------------------------+ //| Получаем общий сигнал на открытие позиции | //+-------------------------------------------------------------------------------------+ int GetSignal() { if (GetStateMa(fastMa, slowMa) == MA_DIRECT_TO_UP) // Если машки указывают вверх.. if ( MathAbs(Ask - fastMa) <= i_thresholdFromMa * pt ) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa.. return(SIGNAL_BUY); // ..функция возвращает сигнал покупки if (GetStateMa(fastMa, slowMa) == MA_DIRECT_TO_DOWN) // Если машки указывают вниз.. if ( MathAbs(Bid - fastMa) <= i_thresholdFromMa * pt ) // ..зазор между ценой продажи и машки, <= i_thresholdFromMa.. return(SIGNAL_SELL); // ..функция возвращает сигнал продажи return (SIGNAL_NO); } //+-------------------------------------------------------------------------------------+ //| Функция start | //+-------------------------------------------------------------------------------------+ int start() { fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1); slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1); // Отслеживание открытия нового бара static datetime lastBarTime = 0; // Время проведения последних рассчётов if (lastBarTime == iTime(NULL, 0, 0)) // На текущем баре все необходимые действия.. return (0); // ..уже были выполнены // Рассчёт сигнала int signal = GetSignal(); // Проведение торговых операций if (signal != SIGNAL_NO) if (!Trade(signal)) return (0); lastBarTime = iTime(NULL, 0, 0); // На текущем баре все необходимые действия.. // .. успешно выполнены return (0); }注文の価格がMAより上(下)+(-)のオフセットであることが条件として明示されています。これです。if ( MathAbs(Ask - fastMa) <= i_thresholdFromMa * pt )シグナルは、価格がMA +(-)インデントの「ギャップ」 エリアにあるときのみ計算される必要があります。例えば買い付け機能で。ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);購入はfastMaよりi_thresholdFromMa * ptだけ 上でなければならない。実は、ないんです。言葉のせいなのか、振りのバグなのか。他にどう説明すればいいのでしょうか?私は、条件や関数を追加することなく、コード全体を与えました(1つの裸のシグナルとオープニングのみ)。もう、はっきり書いてある(テスターのため、本気では確認していない!)。開き方はこうです。artmedia70 です。強調表示について:始値で作業すれば、ゼロバーでMAが再描画されることはありません。 1小節目の条件をあえて作って、混乱しないようにしました。要は、どう動かすか...ですね。 ファイル: test_ma.mq4 8 kb oper11 2013.02.03 16:08 #1312 各時間の4分5秒などの開始フラグは、インジケータに定義する必要があります。if( Minute()==15)足りないものはない。正しい方向へ押し出す。 Ilya Novakovski 2013.02.03 16:19 #1313 質問なのですが、取引基準を作る際に右にシフトした移動平均 線を使用した場合、つまりシフト値が正である場合。それから、シグナルを形成するとき、私はゼロまたは最初のバーの移動平均の値を使用するのではなく、シフトの値に対応するインデックスを持つバーで使用する必要があります。 Alekseu Fedotov 2013.02.03 17:12 #1314 Operr: 各時間の4分5秒などの開始フラグは、インジケータに定義する必要があります。 if( Minute()==15)// так будет работать в течении 1 минуты (от 15 до 16) if( Minute()>=15)// так от 15 минут и до конца текущего часа Viktar Dzemikhau 2013.02.03 19:58 #1315 Tincup:質問なのですが、取引基準を作る際に右にシフトした移動平均線を使用した場合、つまりシフト値が正である場合。それから、シグナルを形成するとき、私はゼロまたは最初のバーの移動平均の値を使用するのではなく、シフトの値に対応するインデックスを持つバーで使用する必要があります。 移動平均をチャートに載せて、必要な指数を確認する。視覚的に確認することができます。 Artyom Trishkin 2013.02.04 08:04 #1316 hoz:まあ間違いなく、提案するよりも「送る」すなわち「send」する方が簡単です。実際、教科書で突いてくるようなことは何も頼んでいません。一応重複して書きましたが、本質は変わりません。ここにテストコードのバリアントを添付し、私の投稿でも公開しています。注文の価格がMAより上(下)+(-)のオフセットであることが条件として明示されています。これです。シグナルは、価格がMA +(-)インデントの「ギャップ」 エリアにあるときのみ計算される必要があります。例えば買い付け機能で。購入はfastMaよりi_thresholdFromMa * ptだけ 上でなければならない。実はないんです。私の言語のバグか、マウスのバグか、どちらかです。他にどう説明すればいいのでしょうか?私は、条件や関数を追加しないコード全体(むき出しのシグナルとオープニングの1つだけ)を示しました。もう、はっきり書いてある(テスターのため、本気では確認していない!)。開き方はこうです。 特に1本目のバーで条件を作ったので、混乱することはないでしょう。要は、どう動かすか...ですね。 改めてお聞きしますが、具体的にはいつ頃発注されるのですか?あなたのコードの答えではない (それを理解したくない - 分析のための独自のコードの十分がある)、そしてちょうど言葉。 例:あるMAの上/下に保留注文を出したい。バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ ...。2回目ですが、説明してください、そんなに難しいんですか?私たちは、とっくにあなたの問題を解決しているはずです。 Artyom Trishkin 2013.02.04 09:23 #1317 また、fastMAとslowMAがグローバルに定義されている場合、なぜ関数に渡すのでしょうか?すべての関数は、呼び出された関数に パラメータを渡さずに、とにかくそれらを見ることができます。 削除済み 2013.02.04 09:38 #1318 こんにちは。EAにおけるGAPの扱いについて教えてください。週末にGEPがよく発生するのですが、発生後に注文のある作業がハングアップしてしまうのですが、どうすれば直るのでしょうか、事前にありがとうございました Boris 2013.02.04 09:58 #1319 Artyomさん、MathMaxを 使った表現とifを使った表現では、どちらが速く動くと思いますか?double dist = MathMax(MathMax(NormalizeDouble(Dist*Point,Digits),spread),MathMax(StopLevel,FreezeLevel));//это? // или это? double dist = NormalizeDouble(Dist*Point,Digits); if(dist < spread) dist = spread; if(dist < StopLevel) dist = StopLevel; if(dist < FreezeLevel) dist = FreezeLevel; 言葉で説明しなかったのは、この表現が私のエラーを回避するのに役立っていることは明らかだからです130。 ありがとうございました。 Ilya Novakovski 2013.02.04 10:20 #1320 hoz: 平均値をチャートに載せて、必要な指数を確認します。視覚的に確認することができます。あなたの答えがよく分からないので、もう一度聞きます。取引条件を策定する際に、正しく理解されましたか? 対応するバー数のMA値を逆向きに使用する必要がありますが、画像内の黄色い矢印で示された値は使用しないでください。ご回答を理解した上で、図を描きました。 1...125126127128129130131132133134135136137138139...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
IMHOは、複雑ではなく、非常に簡単に「指示」または「送信」することができます。
まあ確かに提案するよりも「送る」すなわち「send」の方が簡単ですからね。そして実際、教科書で私をつつくように何も聞いていないのです。一箇所に重複して書いたのは事実ですが、本質は変わりません。
最後に、あなたがやりたいことを具体的に教えてください...。例:MAK so-and-soが上昇しており、MAK so-and-soを上回り、価格がMAK so-and-soの下/上のある時点で、それが本当 であれば、ある距離で保留注文を出します。大まかなアルゴリズムをお伝えします。このようなコードの断片は、文脈から切り離されているため、正しい方向に導くことは困難です。やはり課題は小学5年生向け(大げさ)。
ここでは、テスト版のコードを添付して、私の投稿でも公開しています。
注文の価格がMAより上(下)+(-)のオフセットであることが条件として明示されています。
これです。
シグナルは、価格がMA +(-)インデントの「ギャップ」 エリアにあるときのみ計算される必要があります。
例えば買い付け機能で。
購入はfastMaよりi_thresholdFromMa * ptだけ 上でなければならない。
実は、ないんです。言葉のせいなのか、振りのバグなのか。他にどう説明すればいいのでしょうか?私は、条件や関数を追加することなく、コード全体を与えました(1つの裸のシグナルとオープニングのみ)。もう、はっきり書いてある(テスターのため、本気では確認していない!)。
開き方はこうです。
強調表示について:始値で作業すれば、ゼロバーでMAが再描画されることはありません。
質問なのですが、取引基準を作る際に右にシフトした移動平均 線を使用した場合、つまりシフト値が正である場合。
それから、シグナルを形成するとき、私はゼロまたは最初のバーの移動平均の値を使用するのではなく、シフトの値に対応するインデックスを持つバーで使用する必要があります。
各時間の4分5秒などの開始フラグは、インジケータに定義する必要があります。
質問なのですが、取引基準を作る際に右にシフトした移動平均線を使用した場合、つまりシフト値が正である場合。
それから、シグナルを形成するとき、私はゼロまたは最初のバーの移動平均の値を使用するのではなく、シフトの値に対応するインデックスを持つバーで使用する必要があります。
移動平均をチャートに載せて、必要な指数を確認する。視覚的に確認することができます。
まあ間違いなく、提案するよりも「送る」すなわち「send」する方が簡単です。実際、教科書で突いてくるようなことは何も頼んでいません。一応重複して書きましたが、本質は変わりません。
ここにテストコードのバリアントを添付し、私の投稿でも公開しています。
注文の価格がMAより上(下)+(-)のオフセットであることが条件として明示されています。
これです。
シグナルは、価格がMA +(-)インデントの「ギャップ」 エリアにあるときのみ計算される必要があります。
例えば買い付け機能で。
購入はfastMaよりi_thresholdFromMa * ptだけ 上でなければならない。
実はないんです。私の言語のバグか、マウスのバグか、どちらかです。他にどう説明すればいいのでしょうか?私は、条件や関数を追加しないコード全体(むき出しのシグナルとオープニングの1つだけ)を示しました。もう、はっきり書いてある(テスターのため、本気では確認していない!)。
開き方はこうです。
特に1本目のバーで条件を作ったので、混乱することはないでしょう。要は、どう動かすか...ですね。
例:あるMAの上/下に保留注文を出したい。バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ、バッ ...。
2回目ですが、説明してください、そんなに難しいんですか?私たちは、とっくにあなたの問題を解決しているはずです。
こんにちは。
EAにおけるGAPの扱いについて教えてください。
週末にGEPがよく発生するのですが、発生後に注文のある作業がハングアップしてしまうのですが、どうすれば直るのでしょうか、事前にありがとうございました
Artyomさん、MathMaxを 使った表現とifを使った表現では、どちらが速く動くと思いますか?
言葉で説明しなかったのは、この表現が私のエラーを回避するのに役立っていることは明らかだからです130。
ありがとうございました。
平均値をチャートに載せて、必要な指数を確認します。視覚的に確認することができます。
あなたの答えがよく分からないので、もう一度聞きます。取引条件を策定する際に、正しく理解されましたか?
対応するバー数のMA値を逆向きに使用する必要がありますが、画像内の黄色い矢印で示された値は使用しないでください。
ご回答を理解した上で、図を描きました。