現在MT4で独自のEAを作ろうとプログラムの勉強をしているのですが、
同じEAを同時に複数の通貨ペアで動かし、尚且つ1通貨ペア当たりの同時に持てる最大ポジション数を使用者側で(Externで)設定出来るようにしたいです。
具体的に言いますと、同時に持てるポジションの数を
USDJPYは最大2つ
GBPJPYは最大3つ
AUDJPYは最大1つ
と、設定して上記3つの通貨ペアで同じEAを動かした時に、
ポジションの合計が上記通り(最大で6個)になるようなものを作りたいのですが、
どうしたらよいのでしょうか?
(プログラム上部)
extern int MaxOrder=2; //使用者側で設定出来る同時に持てる最大ポジション数
(int start()内)
int order=0;
for(int i=OrdersTotal()-1; i>=0; i- -)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
order=order+1;
}
if(order>0)
{
if(決済条件)
{
決済プログラム;
}
}
if(order<MaxOrder)
{
if(エントリー条件)
{
エントリープログラム;
}
}
みたいなプログラムでやってみたり、実は他にもいろいろと試しているのですが、うまくいきません。
プログラム初心者なので出来れば詳細に教えていただけると助かります。
宜しくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
MaxOrderの値を、Symbol()によって設定するしかないでしょう。
この回答への補足
fxsarahさん、ご回答ありがとうございます。また返答が遅くなりまして申し訳ありません。
>MaxOrderの値を、Symbol()によって設定するしかないでしょう。
とは、具体的にはどういうプログラムを書けばいいのでしょうか?
fxsarahさんからご返答をいただく前にもいろいろと試しており、ちょっと混乱しております。
お手数ですがもう少し詳細にお教えいただけると助かります。
度々の自己レス申し訳ありません。
どうやら解決できた気がします。
メインスレのプログラム中には必要ないと思ったので記載しなかったのですが、ticket変数の宣言場所に間違いがあったようで、下記の様にしたところ大丈夫でした。
(プログラム上部)
extern int MaxOrder=2; //使用者側で設定出来る同時に持てる最大ポジション数
int start()
{
int order=0;
int ticket=0;
for(int pos=OrdersTotal()-1; pos>=0; pos- -)
{
if(OrderSelect(pos,SELECT_BY_POS)= =false) continue;
if(OrderSymbol()= =Symbol() && OrderMagicNumber()= =MagicNumber)
order+ +;
}
if(order>0)
{
if(買いポジションの決済条件) 買いポジション決済関数;
if(売りポジションの決済条件) 売りポジション決済関数;
}
if(order<MaxOrder)
{
if(買いポジションのオープン条件)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Example_EA",MagicNumber,0,Blue);
if(TP>0)
{
if(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+TP*Point,0,Blue);
}
}
if(SL>0)
{
if(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),Ask-SL*Point,OrderTakeProfit(),Blue);
}
}
return(0);
}
else if(売りポジションのオープン条件)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Example_EA",MagicNumber,0,Red);
if(TP>0)
{
if(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Bid-TP*Point,0,Red);
}
}
if(SL>0)
{
if(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),Bid+SL*Point,OrderTakeProfit(),Blue);
}
}
return(0);
}
}
}
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mql4のコンパイルエラー箇所の...
-
トレーディングストップは利用...
-
MT4によるバックテストの信頼性...
-
Tera Termが途中で切れるのです...
-
メタトレーダーでのヒストリー...
-
フリーのMT4インジケーターのエ...
-
FXの日足時系列データをダウン...
-
MT4 RSIアラートのインジ探して...
-
macでポチ袋を自作したいのでテ...
-
FX情報商材業者検証比較ブログF...
-
FXのプラットフォームってなに?
-
為替時系列データ(4本値)
-
FX自動売買システムってどうな...
-
FX MT4インジケーターに役に立...
-
メタトレーダーの使い方について
-
au W61T デコメテンプレート
-
FXをしたいと考えております。
-
FXでバーチャル取引がしたい。
-
MT4のインジケーターの上の数字...
-
MT5のBIT(売り)ASK(買い)のライ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2回戦止まりは2回戦は勝ってい...
-
MT4で時間を指定するにはどのよ...
-
mql4のコンパイルエラー箇所の...
-
マネパのストップ(逆指値)の...
-
MT4によるバックテストの信頼性...
-
豊島久道著「FXメタトレーダ...
-
MT4(メタトレーダー)で単純...
-
メタトレーダーでCloseがある値...
-
MT4で取引時間を指定する。
-
Tera Termが途中で切れるのです...
-
80歳の高齢者ですが、金融庁に...
-
為替データをエクセルにダウン...
-
MT5のBIT(売り)ASK(買い)のライ...
-
陽線・陰線が切り替わったらア...
-
ダウ理論の転換に関するインジ...
-
MT4サブウインドウの移動線のク...
-
mt4のテスターが遅すぎる。
-
【MQL4】ZigZagの天底の値の取得
-
FXの日足時系列データをダウン...
-
自動売買(システムトレード)を...
おすすめ情報