現在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ランキング
-
もう一度介入があると思うので...
-
トレーダーっていくら利益出て...
-
昭和には1ドル360円の時代があ...
-
ユーロを円に交換したい
-
私の手法は両建てでも有効なの...
-
為替介入とTTSレート
-
投資詐欺でしょうか? Facebook...
-
円安って日銀がドルを刷れば解...
-
ドルで買い物
-
株とFXどちらがいいでしょうか...
-
FX エントリーするとレンジにな...
-
日本円はなぜ、ほぼ全世界の通...
-
外国為替市場への介入について...
-
FXトレーダーの法人化
-
FXを始めてみようと思っている...
-
FX証券会社からの出金について
-
為替手数料 片道25銭 の計算
-
国内FX会社で出金を繰り返すと...
-
5月FOMCで金利は下がるのか?
-
1ドル158円の円安って全く問題...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2回戦止まりは2回戦は勝ってい...
-
MT4で時間を指定するにはどのよ...
-
mql4のコンパイルエラー箇所の...
-
マネパのストップ(逆指値)の...
-
MT4によるバックテストの信頼性...
-
豊島久道著「FXメタトレーダ...
-
MT4(メタトレーダー)で単純...
-
メタトレーダーでCloseがある値...
-
MT4で取引時間を指定する。
-
Tera Termが途中で切れるのです...
-
80歳の高齢者ですが、金融庁に...
-
MT5のBIT(売り)ASK(買い)のライ...
-
為替データをエクセルにダウン...
-
陽線・陰線が切り替わったらア...
-
ダウ理論の転換に関するインジ...
-
MT4サブウインドウの移動線のク...
-
【MQL4】ZigZagの天底の値の取得
-
mt4のテスターが遅すぎる。
-
FXの日足時系列データをダウン...
-
自動売買(システムトレード)を...
おすすめ情報