[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 511 1...504505506507508509510511512513514515516517518...631 新しいコメント Роман 2012.11.15 16:49 #5101 hoz: 他に何があるんだ?同じことを100回繰り返し計算する必要があるのでしょうか?教科書のように、信号を専門家の一部にすれば、幸せになれますよ さっきのスレッドにあるリンクは全部あげたんだけどな...。 TarasBY 2012.11.15 16:50 #5102 hoz: それ以外にはないでしょう?同じことを100回繰り返し計算する必要があるのでしょうか? アイデアはRIGHT、実装はCROSS!:))) Viktar Dzemikhau 2012.11.15 16:57 #5103 そうですね......具体的な例がないんです。https://docs.mql4.com/ru/basis/variables/formal私のように関数のパラメータがある一番上、つまりデータ型の 後に&が書かれています。 TarasBY 2012.11.15 17:09 #5104 hoz:そうですね......具体的な例がないんです。https://docs.mql4.com/ru/basis/variables/formal私のように関数のパラメータがある一番上、つまりデータ型の後に&が書かれています。 もしかしたら、その方法でコンパイルできるかもしれません。//+-------------------------------------------------------------------------------------+ //| Получение цены входа в покупку или в продажу | //+-------------------------------------------------------------------------------------+ bool GetPriceToInput (int signal) { firstBarClosed = iClose(Symbol(),1440,2); secondBarClosed = iClose(Symbol(),1440,1); double deltaForSell = (firstBarClosed - secondBarClosed)/2; double priceForSell = secondBarClosed - deltaForSell; double deltaForBuy = (secondBarClosed - firstBarClosed)/2; double priceForBuy = secondBarClosed + deltaForBuy; return (Trade (signal, priceForBuy, priceForSell)); } //+-------------------------------------------------------------------------------------+ //| Функция Start | //+-------------------------------------------------------------------------------------+ int start() { int signal = GetSignal(); if (signal != SIGNAL_NO) if(!GetPriceToInput (signal)) return(0); return(0); } コード構成は "左利き "っぽいけど......。 Viktar Dzemikhau 2012.11.15 17:16 #5105 TarasBY:もしかしたら、その方法でコンパイルできるかもしれません。コード構成は "左巻き "ですが...。 まあ・・・書いたのは私なんですけどね。最初のスクープを歌ってください。:) Viktar Dzemikhau 2012.11.15 17:29 #5106 専門家を少し書き直しました。これが出てきたのです。//+------------------------------------------------------------------+ //| 2 Days.mq4 | //| hoz | //| | //+------------------------------------------------------------------+ #property copyright "hoz" #property link "" extern string A1 = "Объем сделки. Если i_lots = 0, то считается в процентах"; extern double i_lots = 0.1; extern string A2 = "Управление рисками"; extern double i_sl = 15, i_tp = 10; extern int slippage, price_b, price_a; extern string Z1 = "=== Прочие настройки ==="; extern string i_openOrderSound = "ok.wav"; extern int i_magicNumber = 400021; double firstBarClosed, secondBarClosed; // Идентификаторы типов сигналов #define SIGNAL_BUY 1 // Сигнал на покупку #define SIGNAL_SELL -1 // Сигнал на продажу #define SIGNAL_NO 0 // Нет сигнала #include <stderror.mqh> //+-------------------------------------------------------------------------------------+ //| Функция деиницилизации эксперта | //+-------------------------------------------------------------------------------------+ int init() { return(0); } //+-------------------------------------------------------------------------------------+ //| Функция деиницилизации эксперта | //+-------------------------------------------------------------------------------------+ int deinit() { return(0); } //+-------------------------------------------------------------------------------------+ //| Открытие позиций | //+-------------------------------------------------------------------------------------+ bool Trade(int signal, double& priceForBuy, double& priceForSell) { // FindOrders(); priceForBuy = NormalizeDouble(priceForBuy,Digits); priceForSell = NormalizeDouble(priceForSell,Digits); if (signal == SIGNAL_BUY) if (!OrderSend(Symbol(),OP_BUYLIMIT, i_lots,priceForBuy,slippage,i_sl,i_tp,"",i_magicNumber,3)) return(false); if (signal == SIGNAL_SELL) if (!OrderSend(Symbol(),OP_SELLLIMIT,i_lots,priceForSell,slippage,i_sl,i_tp,"",i_magicNumber,3)) return(false); return(true); } //+-------------------------------------------------------------------------------------+ //| Получение цены входа в покупку или в продажу | //+-------------------------------------------------------------------------------------+ double GetPriceToInput(int signal) { firstBarClosed = iClose(Symbol(),1440,2); secondBarClosed = iClose(Symbol(),1440,1); double deltaForSell = (firstBarClosed - secondBarClosed)/2; double priceForSell = secondBarClosed - deltaForSell; // return(priceForSell); double deltaForBuy = (secondBarClosed - firstBarClosed)/2; double priceForBuy = secondBarClosed + deltaForBuy; return(Trade(signal, priceForBuy, priceForSell)); } //+-------------------------------------------------------------------------------------+ //| Генерация сигнала закрытия, покупки или продажи | //+-------------------------------------------------------------------------------------+ int GetSignal() { if(firstBarClosed > secondBarClosed) return(SIGNAL_BUY); if(firstBarClosed < secondBarClosed) return(SIGNAL_NO); } //+-------------------------------------------------------------------------------------+ //| Функция Start | //+-------------------------------------------------------------------------------------+ int start() { int signal = GetSignal(); if (signal != SIGNAL_NO) if(!Trade(signal, priceForBuy, priceForSell)) return(0); return(0); } ちなみに、エラーは'priceForBuy' - variable not defined E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (103, 25) 'priceForSell' - variable not defined E:\Insall'd soft's\Forex\Admiral Markets\experts\2 Days.mq4 (103, 38) は、まさに開始 関数で発生します。これらの変数は定義されておらず、他のどこかでもありません。では、スタート 時に何かを追加する必要があるのでしょうか? Yury Reshetov 2012.11.15 17:31 #5107 hoz:ちなみに、エラーはは、まさに開始 関数で発生します。これらの変数は定義されておらず、他のどこかでもありません。では、スタート 時に何かを追加する必要があるのでしょうか? これらは、start()で定義し、呼び出された関数に 参照渡しする必要がある。 Viktar Dzemikhau 2012.11.15 17:43 #5108 Reshetov: これらは、start()で定義し、呼び出す関数に参照渡しする必要があります。 これが一番シンプルな方法です。しかし、あるプログラマーが書いた記事を見ていると、start()関数には全く何も定義されていない。彼のアドバイザーのリンクはこちらです。http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4特に、彼がどのようにインテリジェントなコードを書いているのか、とても興味があります。そこで、すべてを別々の関数に書き、そこに変数を宣言せずに必要なものだけを追加してスタート する方法を学びたいと思います。変数を関数に参照渡しする場合、元の変数のバッファを操作しているのであって、その変数のdoubleを操作しているのではありません。つまり、以前にどの関数で宣言したかは関係ないのです。そうでしょう? Yury Reshetov 2012.11.15 17:56 #5109 hoz: これは最もシンプルなバリエーションです。しかし、あるプログラマーが書いた記事を観察していると、彼のstart 関数には全く何も宣言されていないのです。関数の外でスタティック変数を 宣言しておけば、参照で何かを渡す必要は全くありません。hoz: 関数に参照変数を渡すと、その変数の複製ではなく、渡した初期変数そのもののバッファで作業することになります。つまり、以前にどの関数で宣言したかは関係ないのです。そうでしょう? 考え方が間違っている。関数の引数として変数を渡す場合、関数本体に宣言する必要はありません - 引数の中ですでに宣言されています。渡される先の関数を宣言する必要があります。 Alekseu Fedotov 2012.11.15 18:01 #5110 hoz: これが一番簡単な方法です。しかし、あるプログラマーの記事を見ていると、彼のstart 関数には全く何も宣言されていない。彼のアドバイザーのリンクはこちらです。http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4特に、彼がどのようにインテリジェントなコードを書いているのか、とても興味があります。そこで、すべてを別々の関数に書き、そこに変数を宣言せずに必要なものだけを追加してスタート する方法を学びたいと思います。変数を関数に参照渡しする場合、元の変数のバッファを操作しているのであって、その変数のdoubleを操作しているのではありません。つまり、以前にどの関数で宣言したかは関係ないのです。そうでしょう? 彼はまた、知的に を書いている。読む はい、行を変更してくださいif(!Trade(signal, priceForBuy, priceForSell))までif(!GetPriceToInput (signal)) 1...504505506507508509510511512513514515516517518...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
他に何があるんだ?同じことを100回繰り返し計算する必要があるのでしょうか?
教科書のように、信号を専門家の一部にすれば、幸せになれますよ
さっきのスレッドにあるリンクは全部あげたんだけどな...。
それ以外にはないでしょう?同じことを100回繰り返し計算する必要があるのでしょうか?
そうですね......具体的な例がないんです。
https://docs.mql4.com/ru/basis/variables/formal
私のように関数のパラメータがある一番上、つまりデータ型の 後に&が書かれています。
そうですね......具体的な例がないんです。
https://docs.mql4.com/ru/basis/variables/formal
私のように関数のパラメータがある一番上、つまりデータ型の後に&が書かれています。
もしかしたら、その方法でコンパイルできるかもしれません。
コード構成は "左利き "っぽいけど......。
もしかしたら、その方法でコンパイルできるかもしれません。
コード構成は "左巻き "ですが...。
まあ・・・書いたのは私なんですけどね。最初のスクープを歌ってください。:)
専門家を少し書き直しました。これが出てきたのです。
ちなみに、エラーは
は、まさに開始 関数で発生します。これらの変数は定義されておらず、他のどこかでもありません。では、スタート 時に何かを追加する必要があるのでしょうか?
ちなみに、エラーは
は、まさに開始 関数で発生します。これらの変数は定義されておらず、他のどこかでもありません。では、スタート 時に何かを追加する必要があるのでしょうか?
これらは、start()で定義し、呼び出す関数に参照渡しする必要があります。
これが一番シンプルな方法です。しかし、あるプログラマーが書いた記事を見ていると、start()関数には全く何も定義されていない。
彼のアドバイザーのリンクはこちらです。
http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4
特に、彼がどのようにインテリジェントなコードを書いているのか、とても興味があります。そこで、すべてを別々の関数に書き、そこに変数を宣言せずに必要なものだけを追加してスタート する方法を学びたいと思います。
変数を関数に参照渡しする場合、元の変数のバッファを操作しているのであって、その変数のdoubleを操作しているのではありません。つまり、以前にどの関数で宣言したかは関係ないのです。そうでしょう?
これは最もシンプルなバリエーションです。しかし、あるプログラマーが書いた記事を観察していると、彼のstart 関数には全く何も宣言されていないのです。
関数の外でスタティック変数を 宣言しておけば、参照で何かを渡す必要は全くありません。
関数に参照変数を渡すと、その変数の複製ではなく、渡した初期変数そのもののバッファで作業することになります。つまり、以前にどの関数で宣言したかは関係ないのです。そうでしょう?
これが一番簡単な方法です。しかし、あるプログラマーの記事を見ていると、彼のstart 関数には全く何も宣言されていない。
彼のアドバイザーのリンクはこちらです。
http://www.forextrade.ru/media/Image/MQLabs/181_ag/ChannelByMACross_Expert.mq4
特に、彼がどのようにインテリジェントなコードを書いているのか、とても興味があります。そこで、すべてを別々の関数に書き、そこに変数を宣言せずに必要なものだけを追加してスタート する方法を学びたいと思います。
変数を関数に参照渡しする場合、元の変数のバッファを操作しているのであって、その変数のdoubleを操作しているのではありません。つまり、以前にどの関数で宣言したかは関係ないのです。そうでしょう?
彼はまた、知的に を書いている。
読む
はい、行を変更してください
if(!Trade(signal, priceForBuy, priceForSell))
まで
if(!GetPriceToInput (signal))