[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 180 1...173174175176177178179180181182183184185186187...432 新しいコメント Sergey Diubakin 2013.02.25 18:07 #1791 solnce600:皆さん、ごきげんよう。私は初心者です。テスターでアイデアをコードに落とし込むのは初めての試みです。アイデアは簡単で、1時間足のローソク足の始値で1つずつ、上下に交互に注文を出すことです。簡単なコードを書いてみたのですが・・・。しかし、問題は、プログラムが1つのローソク足の始まりで複数の注文を開くことがあることです。1秒間に1回以上tickが来ると発生するようです。代替案として、if( ) 条件ヘッダを入れてみたところ...。受注総額()==0本当に1オーダーしか開きません。 しかし、このバリエーションは私には合いません。なぜなら、与えられたローソク足が翌日には開かれないからで、このローソク足を開いた瞬間には、すでにランダムな数の注文が取引されています。OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); start() の実行を return で中断する; ....というのもやってみたのですが。は役に立たなかった。1秒以内に開く注文を、任意のティックに1つだけ作る方法を教えていただければ幸いです。int start() { double Price=Ask。 double SL=Price-300*Point; double TP=Price+300*Point; if( 時()==10 && 分()==00 && 秒()==00) OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP)を実行。} このバリエーションを試してみてください。int TimeNow, TimePrev, PrevType; int start() { double Price,SL,TP; int Ticket; TimeNow=iTime(NULL,0,0); if(TimePrev==TimeNow) return(0); if(PrevType!=1) { Price=NormalizeDouble(Ask,Digits); SL=NormalizeDouble(Price-300*Point,Digits); TP=NormalizeDouble(Price+300*Point,Digits); Ticket=OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); if(Ticket!=-1) { TimePrev=TimeNow; PrevType=1; } } else if(PrevType!=-1) { Price=NormalizeDouble(Bid,Digits); SL=NormalizeDouble(Price+300*Point,Digits); TP=NormalizeDouble(Price-300*Point,Digits); Ticket=OrderSend(Symbol(),OP_SELL,0.1,Price,3,SL,TP); if(Ticket!=-1) { TimePrev=TimeNow; PrevType=-1; } } } ANDREY 2013.02.25 18:21 #1792 alsu: 早速のご返信、誠にありがとうございました。 ANDREY 2013.02.25 18:23 #1793 Diubakin: このオプションを試してみてください。 早速のご返信、誠にありがとうございました。 Boris 2013.02.25 20:14 #1794 プロフェッショナルの皆様へマニュアルモードで動作するSloseBy()関数はどこにあるのでしょうか?フクロウに追加して、マイナス極大のポジションを プラス極大のポジションに手動ではなく、条件に応じて自動的にクローズ できるようにしたいです。codebaseで見つけられませんでした。コードベースにはありませんでした。 ありがとうございました。 Sergey Diubakin 2013.02.25 21:26 #1795 borilunad: エヴプロ!マニュアルモードで動作するСloseBy()関数はどこにあるのでしょうか?フクロウに追加したいのですが、最大マイナスのポジションを最大プラスで反対側に閉じるのではなく、条件に応じて自動的に閉じるようにしたいのですが、いかがでしょうか?codebaseで見つけられませんでした。コードベースにはありません。このオプションを試してみてください。bool LockOFF(int EA_Magic) { double Result, PrevLoss, PrevProfit; int pos, orders_total, order_type, MaxProfitTicket, MaxLossTicket; bool Ans; MaxProfitTicket=-1; MaxLossTicket=-1; orders_total=OrdersTotal(); for(pos=orders_total-1; pos>=0; pos--) { if(!OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=EA_Magic) continue; // не наш ордер if(OrderType()>1) continue; Result=OrderProfit()+OrderSwap()+OrderCommission(); if(Result<0.0 && (PrevLoss==0.0 || Result<PrevLoss)) { PrevLoss=Result; MaxLossTicket=OrderTicket(); order_type=OrderType(); } } // end of for if(MaxLossTicket==-1) return(false); // нет убыточной позиции if(order_type==OP_BUY) order_type=OP_SELL; else order_type=OP_BUY; orders_total=OrdersTotal(); for(pos=orders_total-1; pos>=0; pos--) { if(!OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=EA_Magic) continue; // не наш ордер if(order_type!=OrderType()) continue; Result=OrderProfit()+OrderSwap()+OrderCommission(); if(Result>0.0 && (PrevProfit==0.0 || Result>PrevProfit)) { PrevProfit=Result; MaxProfitTicket=OrderTicket(); } } // end of for if(MaxProfitTicket==-1) return(false); // нет противоположной прибыльной позиции Ans=OrderCloseBy(MaxLossTicket, MaxProfitTicket); if(!Ans) { Print("Ошибка при встречном закрытие"); return(false); } return(true); } Boris 2013.02.25 22:18 #1796 セルゲイさん、ざっと見た感じでは、価値あるものだと思いますよー。ねじ込んで条件を整え、試してみる。ありがとうございました。 試してみたところ、エラーもなく動作しましたあとは、条件を変えて実験して、効果を出せば大丈夫でしょうでも、それは明日のお楽しみ! ありがとうございました。そして面白い夢! Artyom Trishkin 2013.02.25 23:10 #1797 borilunad: セルゲイさん、ざっと見た感じでは、価値あるものだと思いますよー。ねじ込んで条件を整え、試してみる。ありがとうございました。 カウンタークローズコマンドの代わりに、本格的なカウンタークローズ機能を挿入してください。そして、関数内の変数を初期化します。 Boris 2013.02.26 06:35 #1798 artmedia70: カウンタークローズコマンドの代わりに、本格的なカウンタークローズ機能を挿入してください。そして、関数内の変数を初期化します。 Artyomさん、ありがとうございます!遅かったですね。今日はオンラインのルールに従って全部作るぞー。 Artyom Trishkin 2013.02.26 07:09 #1799 borilunad: アルチョムさん、ありがとうございます! 遅かったですね。今日のオンラインのルールに則って、すべてを実行します がんばってください・・・。 Maksim Paulau 2013.02.26 09:47 #1800 こんにちは。そんな疑問があります。このインジケータは、他のExpert AdvisorやInductorのコードの断片を、私自身のニーズに合わせて苦労して再設計 しました。大きなコードではないので、思い通りに動作します。問題は、内部で何らかの計算を行い、チャート上に上下の矢印を表示することです。チャート上に矢印が表示されたときに、正しい方向に注文を出すExpert Advisorの作り方を教えてください。正確には、どの矢印が現在アクティブかを知るだけで、あとは自分でできると思います。以下は、分かりやすくするためのコードの一部で、インジケータでの初期化です。 SetIndexBuffer(1, Vverh); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,233); SetIndexBuffer(2,Vniz); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,234); ありがとうございました。 1...173174175176177178179180181182183184185186187...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
皆さん、ごきげんよう。
私は初心者です。テスターでアイデアをコードに落とし込むのは初めての試みです。
アイデアは簡単で、1時間足のローソク足の始値で1つずつ、上下に交互に注文を出すことです。
簡単なコードを書いてみたのですが・・・。しかし、問題は、プログラムが1つのローソク足の始まりで複数の注文を開くことがあることです。
1秒間に1回以上tickが来ると発生するようです。
代替案として、if( ) 条件ヘッダを入れてみたところ...。
本当に1オーダーしか開きません。
しかし、このバリエーションは私には合いません。なぜなら、与えられたローソク足が翌日には開かれないからで、このローソク足を開いた瞬間に
は、すでにランダムな数の注文が取引されています。
OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); start() の実行を return で中断する; ....というのもやってみたのですが。は役に立たなかった。
1秒以内に開く注文を、任意のティックに1つだけ作る方法を教えていただければ幸いです。
int start()
{
double Price=Ask。
double SL=Price-300*Point;
double TP=Price+300*Point;
if( 時()==10 && 分()==00 && 秒()==00)
OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP)を実行。
}
早速のご返信、誠にありがとうございました。
このオプションを試してみてください。
エヴプロ!マニュアルモードで動作するСloseBy()関数はどこにあるのでしょうか?フクロウに追加したいのですが、最大マイナスのポジションを最大プラスで反対側に閉じるのではなく、条件に応じて自動的に閉じるようにしたいのですが、いかがでしょうか?codebaseで見つけられませんでした。コードベースにはありません。
このオプションを試してみてください。
セルゲイさん、ざっと見た感じでは、価値あるものだと思いますよー。ねじ込んで条件を整え、試してみる。ありがとうございました。
試してみたところ、エラーもなく動作しましたあとは、条件を変えて実験して、効果を出せば大丈夫でしょうでも、それは明日のお楽しみ!
ありがとうございました。そして面白い夢!
セルゲイさん、ざっと見た感じでは、価値あるものだと思いますよー。ねじ込んで条件を整え、試してみる。ありがとうございました。
カウンタークローズコマンドの代わりに、本格的なカウンタークローズ機能を挿入してください。そして、関数内の変数を初期化します。
アルチョムさん、ありがとうございます! 遅かったですね。今日のオンラインのルールに則って、すべてを実行します
こんにちは。そんな疑問があります。
このインジケータは、他のExpert AdvisorやInductorのコードの断片を、私自身のニーズに合わせて苦労して再設計 しました。大きなコードではないので、思い通りに動作します。
問題は、内部で何らかの計算を行い、チャート上に上下の矢印を表示することです。
チャート上に矢印が表示されたときに、正しい方向に注文を出すExpert Advisorの作り方を教えてください。
正確には、どの矢印が現在アクティブかを知るだけで、あとは自分でできると思います。
以下は、分かりやすくするためのコードの一部で、インジケータでの初期化です。
SetIndexBuffer(1, Vverh);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,233);
SetIndexBuffer(2,Vniz);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,234);
ありがとうございました。