ドキュメントを読みましたか?
Parameters
チケット
[in] 2番目のパラメータに応じて、注文インデックスまたは注文チケット。
選択
[in] 選択フラグ。以下の値のいずれかになります。
SELECT_BY_POS - オーダープールのインデックス。
SELECT_BY_TICKET - インデックスはオーダーチケットです。
pool=MODE_TRADES
pool=MODE_TRADES [in] オプションの注文プールインデックスです。選択されたパラメータがSELECT_BY_POSの場合に使用されます。 以下の値のいずれかとなります。
MODE_TRADES(デフォルト) - トレーディングプールから選択された注文(オープンオーダーとペンディングオーダー)です。
MODE_HISTORY - 履歴プールから選択された注文 (決済済みおよびキャンセルされた注文) です。
bool OrderSelect( int index, // index or order ticket int select, // flag int pool=MODE_TRADES // mode );
boopa26は未決済注文を決済したいので、boopaはMODE_TRADESを第3パラメータとして 選択します。
boopa26はSELECT_BY_POSかSELECT_BY_TICKETを行うのか? boopa26は知らない。
SELECT_BY_POS //index inside order pool, SELECT_BY_TICKET //index is order ticket.
https://docs.mql4.com/trading/orderclose
boopa26では、forサイクルやwhileサイクルを使わずに、if条件を付けて注文選択機能で未決済の注文を閉じるにはどうしたらよいでしょうか?
ドキュメント注文のクローズには注文チケットが必要ですが、BOOPA26はチケットではなく注文位置を見つけるために注文を選択します。
bool OrderClose( int ticket, // ticket double lots, // volume double price, // close price int slippage, // slippage color arrow_color // color );
1. 注文を選択する
2. 注文を閉じる
はどのようにわからない
//+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright 2005-2014, MetaQuotes Software Corp. | //| http://www.mql4.com | //+------------------------------------------------------------------+ #property copyright "2005-2014, MetaQuotes Software Corp." #property link "http://www.mql4.com" #property description "Moving Average sample expert advisor" #define MAGICMA 20131111 //--- Inputs input double Lots =0.1; input double MaximumRisk =0.02; input double DecreaseFactor=3; input int MovingPeriod =12; input int MovingShift =6; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //--- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //--- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //--- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //--- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //--- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //--- return lot size if(lot<0.1) lot=0.1; return(lot); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { double ma; int res; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- sell conditions if(Open[1]>ma && Close[1]<ma) { res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); return; } //--- buy conditions if(Open[1]<ma && Close[1]>ma) { res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); return; } //--- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; //--- go trading only for first tiks of new bar if(Volume[0]>1) return; //--- get Moving Average ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //--- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //--- check order type if(OrderType()==OP_BUY) { if(Open[1]>ma && Close[1]<ma) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White)) Print("OrderClose error ",GetLastError()); } break; } if(OrderType()==OP_SELL) { if(Open[1]<ma && Close[1]>ma) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White)) Print("OrderClose error ",GetLastError()); } break; } } //--- } //+------------------------------------------------------------------+ //| OnTick function | //+------------------------------------------------------------------+ void OnTick() { //--- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //--- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //--- } //+------------------------------------------------------------------+移動平均 エキスパートアドバイザーは、オープンオーダーをクローズするサイクルに使用します。
boopa26」さんは、次のことをする必要があると思います。
- まず、「boopa26」はまずコーディングの基本を学ぶ必要があります(C言語のような)。
- それから、「boopa26」は、(たとえそれが古くて時代遅れであっても)本やチュートリアルを 読んで、それに従う必要があります。
- 同時に、"boopa26 "は、本やチ ュートリアルに書かれていないMQL4アップデートに 特別な注意を払いながら、ドキュメント 全体を読む必要があります。
- そして、ユーザーコード・ベースにあるインディケータ、エキスパートアドバイザー(EA)、スクリプトのコード例を勉強する必要があります。
- そして、簡単なインジケータを作り始め、より複雑なインジケータを理解し作れるようになるまで、ゆっくりと積み重ねていくことができます。
- そして、「boopa26」は自分自身の簡単なEAを作り始め、より複雑なEAを理解し作れるようになるまで、ゆっくりとそれを積み重ねていくことができます。
「なぜなら、そうしなければ、「boopa26」は皆の時間を無駄にするだけで、「美しいケーキ」の代わりに、「boopa26」が持つのは「焦げた炭」だけになってしまうからです。
boopa26」さんは、次のことをする必要があると思います。
- まず、「boopa26」はまずコーディングの基本を学ぶ必要があります(C言語のような)。
- それから、「boopa26」は、(たとえそれが古くて時代遅れであっても)本やチュートリアルを 読んで、それに従う必要があります。
- 同時に、"boopa26 "は、本やチ ュートリアルに書かれていないMQL4アップデートに 特別な注意を払いながら、ドキュメント 全体を読む必要があります。
- そして、ユーザーコード・ベースにあるインディケータ、エキスパートアドバイザー(EA)、スクリプトのコード例を勉強する必要があります。
- そして、簡単なインジケータを作り始め、より複雑なインジケータを理解し作れるようになるまで、ゆっくりと積み重ねていくことができます。
- そして、"boopa26 "は自分自身の、しかし非常にシンプルなEAを作り始め、より複雑なEAを理解し作ることができるようになるまで、ゆっくりとそれを積み重ねていくことができるのです。
"boopa26" はとても重要なことも学ばなければなりません。"boopa26" は必要なすべてのステップを省略してはいけません。そうしないと "boopa26" はみんなの時間を無駄にするだけで、「美しいケーキ」ではなく、「焦げた炭」しか作れなくなってしまうからです。
1.C言語の知識は必要ない。MQL4は別の機能である。
2.すでに本を読んでいる。
3. ドキュメントをすでに読んでいる
4.コードを書いたことがある
5.?
6.?
boopa26は人の時間を無駄にしない。
boopa26に炭焼きケーキを教えるFMICの先生。
FMICチャコールケーキ教室
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
boopa26は注文送信のコードは書けますが、注文を閉じるための注文選択関数を書けません。boopa26はforサイクルやwhileサイクルを使わずに注文を閉じるための注文選択関数を書きたいのですが、boopa26は注文を閉じるための注文選択関数を組み立てるのが分かりません。
買い注文の 送信例
if(OrdersTotal()==0)OrderSend(Symbol(),OP_BUY,.1,Ask,3,0,0,NULL,9,0,clrNONE).If(OrdersTotal()==0)OrderSend(Symbol(),OP_BUY,0,0,NULL,9,0,clrNONE);
オーダーセレクトの例 boopa26 は理解できない。
オーダーセレクト(int index,int select,int pool)
intインデックスとは何ですか?
int select とは何ですか?
int pool とは何ですか?
オーダーセレクトはどのように行うのですか?