[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 410 1...403404405406407408409410411412413414415416417...631 新しいコメント PapaYozh 2012.10.02 10:59 #4091 7777877: MQLチュートリアル のStandard Functionsの章、Graph Operationsのセクションに、次のような説明のWindowHandleという関数が あります。" ... 指定されたグラフが含まれるウィンドウ(ウィンドウハンドル)のシステムディスクリプタを返す". 質問:「ウィンドウハンドル」の意味(内容)、用途は? P.S.フォーラムを乱雑にしないために、事前に答えをありがとうございます 対応する。 ウィンドウディスクリプタは数字である。 ウィンドウを操作するには、ウィンドウ記述子が必要です。 Lowech 2012.10.02 11:27 #4092 int start() { for (int i=OrdersHistoryTotal()-1;i>=0; i--) { if( OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (TimeDay (OrderOpenTime())==Day() && TimeMonth(OrderOpenTime())==Month() && TimeYear (OrderOpenTime())==Year()) if(OrderType()==OP_SELL && OrdersTotal()==0 || OrdersHistoryTotal()==0) { OrderSend( Symbol(), OP_BUY, 0.1, Ask, 5,Bid-25*Point,Bid+25*Point, "", 0, 0, Blue ); } if( OrderType()==OP_BUY && OrdersTotal()==0 || OrdersHistoryTotal()==0) { OrderSend( Symbol(), OP_SELL, 0.1, Bid, 5,Ask-25*Point,Ask+25*Point, "", 0, 0, Red ); } } } return(0); } こんにちは!コードの問題!私は注文が1つの販売、ベイ、販売などを開く必要がありますが、カウントは日中に行われた、新しいもので翌日、前日の注文を開くの順序を考慮せずに!それは新しい日、新しいサイクルです!上記のコードは、私はこのように見えるべきだと思います!EAが任意の順序を開かないことを除いて!何が間違っているか理解できません...知っていれば教えて!!!!!。 削除済み 2012.10.02 12:45 #4093 正しいやり方 保留中の注文を、新しい日が来たときに、約定していない場合はクローズするようにしたいのですが・・・。書きましたが、うまくいきません。エラー4051 if (iTime(Symbol(),PERIOD_D1,0) != New_Day_DateTime) { New_Day_DateTime = iTime(Symbol(),PERIOD_D1,0); GlobalVariableSet("gNew_Day_DateTime",New_Day_DateTime); for( i=1;i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { if (OrderSymbol()!= Symb) continue; Tip=OrderType(); if (Tip==0) continue; Limit_Stop=Tip; if (OrderMagicNumber()==3) {Ticket_B=OrderTicket();} } } while(true) { if (Limit_Stop==-1) { break; } Ans_B=OrderDelete(Ticket_B); if (Ans_B==true) { break; } } for ( i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { if (OrderSymbol()!= Symb) continue; Tip=OrderType(); if (Tip==1) continue; if (OrderMagicNumber()==4) {Ticket_S=OrderTicket();} } } while(true) { if (Limit_Stop==-1) { break; } Ans_S=OrderDelete(Ticket_S); if (Ans_S==true) { break; } } Mikhail Kozhemyako 2012.10.02 13:00 #4094 Egori4: 注文を 出すときに、有効期限を23:59に設定すると、その注文は勝手に決済されます。 nt OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0,datetime expiration=0, color arrow_color=CLR_NONE, ). Victor Nikolaev 2012.10.02 15:36 #4095 lowech: こんにちは!コードの問題!私は注文が1つの販売、ベイ、販売などを開く必要がありますが、カウントは日中に行われた、新しいもので翌日、前日の注文を開くの順序を考慮せずに!それは新しい日、新しいサイクルです!上記のコードは、私はこのように見えるべきだと思います!EAが任意の順序を開かないことを除いて!何が間違っているか理解できません...知っていれば教えて!!!!!。 また、特に履歴が空であれば、なぜ注文を開く必要があるのでしょうか。そして、人間的にコードを挿入する方法を学んでください、私は他の人の投稿を編集するのが好きではありません。 削除済み 2012.10.02 16:11 #4096 Sepulca: ありがとうございます! やってみます...。 neo777 2012.10.03 09:36 #4097 このアドバイザーを追加するには //+------------------------------------------------------------------+ | CCI.mq4 //| 著作権 © 2012, MetaQuotes Software Corp. //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright"著作権 2012, MetaQuotes Software Corp. #プロパティリンク "http://www.metaquotes.net" extern double LotTrend = 0.1; extern int TP=100; extern int SL=250; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { //---- //---- return(0)です。 } //+------------------------------------------------------------------+ //| 専門家による初期化関数 //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0)です。 } //+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False) { if (Bid>iMA(Symbol(),PERIOD_M15,100,0,1,4,0))。 ) { オーダー送信(Symbol(),OP_BUY,LotTrend,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,Green)を実行。 } if (Bid<iMA(Symbol(),PERIOD_M15,100,0,1,4,0))とする。 ) { OrderSend(Symbol(),OP_SELL,LotTrend,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,Green)を実行します。 } } //---- return(0)です。 } //+------------------------------------------------------------------+ 1.ローソク足の終値のみで取引を開始する場合(価格がSMAと交差した場合)。 [ARCHIVE!] Any rookie question, [ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 Vladero 2012.10.03 10:18 #4098 こんにちは!MQL4のインジケーターについて一つ質問があるのですが、完全に理解することができません...。例えば、簡単なフラクタルのインジケーターがあります。 //+===========================================================================+ //| FRAC.mq4 | //+===========================================================================+ // Параметры: // // По умолчанию frac_5 - оранжевый, frac_3 - темно-синий. //----- // History - определяет на сколько глубоко в историю вам нужно отображение // индикатора (в количестве свечей). Минимальное значение = 2. //----- // frac_3 - если значение "on", то frac_3 отображается, иначе нет. //----- // frac_5 - если значение "on", то frac_5 отображается, иначе нет. //+===========================================================================+ #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 MidnightBlue #property indicator_color2 MidnightBlue #property indicator_color3 Orange #property indicator_color4 Orange //----- extern int history = 500; extern string frac_3 = "on"; extern string frac_5 = "on"; extern int metka = 20; //----- double FRAC_3_POS[]; double FRAC_3_NEG[]; double FRAC_5_POS[]; double FRAC_5_NEG[]; //+===========================================================================+ int init() { SetIndexBuffer (0, FRAC_3_POS); SetIndexStyle (0, DRAW_ARROW, 0, 3); SetIndexArrow (0, 217); //----- SetIndexBuffer (1, FRAC_3_NEG); SetIndexStyle (1, DRAW_ARROW, 0, 3); SetIndexArrow (1, 218); //----- SetIndexBuffer (2, FRAC_5_POS); SetIndexStyle (2, DRAW_ARROW, 0, 3); SetIndexArrow (2, 217); //----- SetIndexBuffer (3, FRAC_5_NEG); SetIndexStyle (3, DRAW_ARROW, 0, 3); SetIndexArrow (3, 218); return(0); } //+===========================================================================+ int start() { int i,Counted_bars; Counted_bars = IndicatorCounted(); i = Bars - Counted_bars - 1; if (history < 2) history = 2; if (i > history - 1) i = history - 1; //i=Bars - 1; //----- if (Digits <= 3) double K = 0.01; else K = 0.0001; while (i >= 0) { double FR_3P=0, FR_3N=0, FR_5P=0, FR_5N=0; //----- if (High[i+1] >= High[i+2] && High[i+1] >= High[i]) FR_3P = High[i+1] + metka*K; //----- if (Low[i+1] <= Low[i+2] && Low[i+1] <= Low[i]) FR_3N = Low[i+1] - metka*K; //----- if (High[i+2] >= High[i+4] && High[i+2] >= High[i+3] && High[i+2] >= High[i+1] && High[i+2] >= High[i]) FR_5P = High[i+2] + metka*K; //----- if (Low[i+2] <= Low[i+4] && Low[i+2] <= Low[i+3] && Low[i+2] <= Low[i+1] && Low[i+2] <= Low[i]) FR_5N = Low[i+2] - metka*K; //----- if (frac_3 != "on") { FR_3P = EMPTY; FR_3N = EMPTY; } //----- if (frac_5 != "on") { FR_5P = EMPTY; FR_5N = EMPTY; } //----- FRAC_3_POS[i+1] = FR_3P; FRAC_3_NEG[i+1] = FR_3N; FRAC_5_POS[i+2] = FR_5P; FRAC_5_NEG[i+2] = FR_5N; i--; } return(0); } //+===========================================================================+ この形でコンパイルすると、左のグラフの枠を拡張するときや履歴を読み込むときに不具合が発生し、本来あるべきでないところにマークが表示されます(添付のスクリーンショットを参照)。コードの一部をコメントアウトすると if (history < 2) history = 2; if (i > history - 1) i = history - 1; そうすれば、これらの不具合は解消されるのですが...。インジケータ配列の「空でない」要素のみを埋めて、ラベルがないところでインジケータ値をリセットしない場合、履歴を読み込む際にも同じ不具合が発生します...。 なぜ、このようなことが起こるのでしょうか。なぜ、履歴を読み込む際にインジケーター全体を再計算する必要があるのか、それが判明したのです。また、なぜ配列の「空」要素の値をNULLにしなければならないのでしょうか? もし、バーのインデックスが左から右の順で、ヒストリーロード時にバーのインデックスが変わり、再計算せずにインジケータが正しく表示されるのであれば、この不具合は理解できるのですが・・・。しかし、MT4ではバーは右から左へインデックスされるので、履歴を読み込む際、以前あったバーのインデックスは変わらないはずです(インジケーターの値も)。では、なぜインジケーターを再計算し、このマーカーのずれはどこから来るのでしょうか? Alexey Oreshkin 2012.10.03 11:24 #4099 皆さん、次の質問に答えてください。 手仕事で買い注文を4つ出して、Bid価格で設定した注文を削除するEAを実行、スリッページは100pips、削除はループ、スレッド占有チェックと気配値更新はあり。なぜすべての注文がループ内で削除されないのでしょうか? ログによると、削除にはstart()関数の初期化が数回必要です int start() { Print("Пришёл новый тик"); int total=OrdersTotal(); Print("Всего ордеров = "+total); for (int i=0;i<total;i++) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { //Print("Всего ордеров = "+OrdersTotal()); Print("удаляем ордер = "+i+" тикет ордера = "+OrderTicket()); while(IsTradeContextBusy()) { Print("Торговый поток занят"); Sleep(100); } RefreshRates(); OrderClose(OrderTicket(),OrderLots(),Bid,100,0); Print("ошибка="+GetLastError()); } return(0); } EAのログはこちらです。 17:16:59 temp EURUSD,M1: ロード成功 17:17:51 temp EURUSD,M1: 新規ティック到着 17:17:51 temp EURUSD,M1: 注文合計 = 4 17:17:51 temp EURUSD,M1: 削除注文 = 0ティック注文= 2808657 17:17:52 temp EURUSD,M1: Close #2808657 buy 1.00 EURUSD at 1.28969 at price 1.28973 17:17:52 temp EURUSD,M1: error=0 17:17:52 temp EURUSD,M1: remove order = 1 ticket order = 2808659 17:17:52 temp EURUSD,M1: close #2808659 buy 1.00 EURUSD at 1.28974 at price 1.28974で終了。28975 17:17:52 temp EURUSD,M1: Error=0 17:17:54 temp EURUSD,M1: New tick came 17:17:54 temp EURUSD,M1: Total orders = 2 17:17:54 temp EURUSD,M1: remove order = 0 tick order = 2808658 17:17:54 temp EURUSD,M1: close #2808658 buy 1.00 EURUSD at 1.28969 at price 1.286.28976 17:17:54 temp EURUSD,M1: Error=0 17:17:56 temp EURUSD,M1: 新しいティックが来た 17:17:56 temp EURUSD,M1: Total orders = 1 17:17:56 temp EURUSD,M1: remove order = 0 ティック注文 = 2808660 17:17:56 temp EURUSD,M1: close #2808660 buy 1.00 EURUSD at 1.28976 at price 1.28977 17:17:56 temp EURUSD,M1: error=0 [ARCHIVE!] Any rookie question, Experts: Smart AC Trader Tough communication problems Рустам 2012.10.03 11:28 #4100 ループを展開する : for(i=OrdersTotal()-1;i>=0;i--){ 1...403404405406407408409410411412413414415416417...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MQLチュートリアル のStandard Functionsの章、Graph Operationsのセクションに、次のような説明のWindowHandleという関数が あります。" ... 指定されたグラフが含まれるウィンドウ(ウィンドウハンドル)のシステムディスクリプタを返す".
質問:「ウィンドウハンドル」の意味(内容)、用途は?
P.S.フォーラムを乱雑にしないために、事前に答えをありがとうございます
対応する。
ウィンドウディスクリプタは数字である。
ウィンドウを操作するには、ウィンドウ記述子が必要です。
こんにちは!コードの問題!私は注文が1つの販売、ベイ、販売などを開く必要がありますが、カウントは日中に行われた、新しいもので翌日、前日の注文を開くの順序を考慮せずに!それは新しい日、新しいサイクルです!上記のコードは、私はこのように見えるべきだと思います!EAが任意の順序を開かないことを除いて!何が間違っているか理解できません...知っていれば教えて!!!!!。
注文を 出すときに、有効期限を23:59に設定すると、その注文は勝手に決済されます。
nt OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0,datetime expiration=0, color arrow_color=CLR_NONE, ).
こんにちは!コードの問題!私は注文が1つの販売、ベイ、販売などを開く必要がありますが、カウントは日中に行われた、新しいもので翌日、前日の注文を開くの順序を考慮せずに!それは新しい日、新しいサイクルです!上記のコードは、私はこのように見えるべきだと思います!EAが任意の順序を開かないことを除いて!何が間違っているか理解できません...知っていれば教えて!!!!!。
また、特に履歴が空であれば、なぜ注文を開く必要があるのでしょうか。そして、人間的にコードを挿入する方法を学んでください、私は他の人の投稿を編集するのが好きではありません。
このアドバイザーを追加するには
//+------------------------------------------------------------------+
| CCI.mq4
//| 著作権 © 2012, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"著作権 2012, MetaQuotes Software Corp.
#プロパティリンク "http://www.metaquotes.net"
extern double LotTrend = 0.1;
extern int TP=100;
extern int SL=250;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0)です。
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)
{
if (Bid>iMA(Symbol(),PERIOD_M15,100,0,1,4,0))。
)
{
オーダー送信(Symbol(),OP_BUY,LotTrend,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,Green)を実行。
}
if (Bid<iMA(Symbol(),PERIOD_M15,100,0,1,4,0))とする。
)
{
OrderSend(Symbol(),OP_SELL,LotTrend,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,Green)を実行します。
}
}
//----
return(0)です。
}
//+------------------------------------------------------------------+
1.ローソク足の終値のみで取引を開始する場合(価格がSMAと交差した場合)。
こんにちは!MQL4のインジケーターについて一つ質問があるのですが、完全に理解することができません...。例えば、簡単なフラクタルのインジケーターがあります。
この形でコンパイルすると、左のグラフの枠を拡張するときや履歴を読み込むときに不具合が発生し、本来あるべきでないところにマークが表示されます(添付のスクリーンショットを参照)。コードの一部をコメントアウトすると
そうすれば、これらの不具合は解消されるのですが...。インジケータ配列の「空でない」要素のみを埋めて、ラベルがないところでインジケータ値をリセットしない場合、履歴を読み込む際にも同じ不具合が発生します...。
なぜ、このようなことが起こるのでしょうか。なぜ、履歴を読み込む際にインジケーター全体を再計算する必要があるのか、それが判明したのです。また、なぜ配列の「空」要素の値をNULLにしなければならないのでしょうか?
もし、バーのインデックスが左から右の順で、ヒストリーロード時にバーのインデックスが変わり、再計算せずにインジケータが正しく表示されるのであれば、この不具合は理解できるのですが・・・。しかし、MT4ではバーは右から左へインデックスされるので、履歴を読み込む際、以前あったバーのインデックスは変わらないはずです(インジケーターの値も)。では、なぜインジケーターを再計算し、このマーカーのずれはどこから来るのでしょうか?
皆さん、次の質問に答えてください。
手仕事で買い注文を4つ出して、Bid価格で設定した注文を削除するEAを実行、スリッページは100pips、削除はループ、スレッド占有チェックと気配値更新はあり。なぜすべての注文がループ内で削除されないのでしょうか? ログによると、削除にはstart()関数の初期化が数回必要です
EAのログはこちらです。
17:16:59 temp EURUSD,M1: ロード成功
17:17:51 temp EURUSD,M1: 新規ティック到着
17:17:51 temp EURUSD,M1: 注文合計 = 4
17:17:51 temp EURUSD,M1: 削除注文 = 0ティック注文= 2808657
17:17:52 temp EURUSD,M1: Close #2808657 buy 1.00 EURUSD at 1.28969 at price 1.28973
17:17:52 temp EURUSD,M1: error=0
17:17:52 temp EURUSD,M1: remove order = 1 ticket order = 2808659
17:17:52 temp EURUSD,M1: close #2808659 buy 1.00 EURUSD at 1.28974 at price 1.28974で終了。28975
17:17:52 temp EURUSD,M1: Error=0
17:17:54 temp EURUSD,M1: New tick came
17:17:54 temp EURUSD,M1: Total orders = 2
17:17:54 temp EURUSD,M1: remove order = 0 tick order = 2808658
17:17:54 temp EURUSD,M1: close #2808658 buy 1.00 EURUSD at 1.28969 at price 1.286.28976
17:17:54 temp EURUSD,M1: Error=0
17:17:56 temp EURUSD,M1: 新しいティックが来た
17:17:56 temp EURUSD,M1: Total orders = 1
17:17:56 temp EURUSD,M1: remove order = 0 ティック注文 = 2808660
17:17:56 temp EURUSD,M1: close #2808660 buy 1.00 EURUSD at 1.28976 at price 1.28977
17:17:56 temp EURUSD,M1: error=0
ループを展開する :