ロットサイズ自動計算機能? - ページ 3

 

ああ、問題がわかりました。外部変数をBUY STOPに変更する代わりに、スクリプトを「BUY」注文に設定した...それが成行注文を出した理由です。

あなたの投稿から。

2010.11.04 20:37:53 Assisted_Order_Script_2010.11.01 EURJPY,H1 inputs:Order_Type="BUY"; OpenBidPrice=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=false.を設定した。

BUY STOPを試してみます。


デモ口座 に$2300 USDを入金してEURJPYの0.12ロットを取得。

2010.11.04 20:10:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: open #155713274 buy stop 0.12 EURJPY at 115.840 sl: 115.689 tp: 115.885 ok
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: OP_BUYSTOP 0.12000000 lots @115.84000000 sl:115.68900000 tp:115.8850000000 試みた。
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: 現在のEquityAtRisk = $22.44 and Current Lotsize = 0.12 and Profit Target = $6.69 for 0.3:1 Profit:Loss ratio
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1: Max allowed EquityAtRisk = $23.00 and Max computed Lotsize = 0.123。
2010.11.04 20:10:15 Assisted_Order_Script_2010.11.01 EURJPY,H1の入力です。Order_Type="BUY STOP"; OpenBidPrice=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=false.を入力。
 

NZDJPYのbuystopの例もやってみました。

2010.11.04 20:14:16 Assisted_Order_Script_2010.11.01 NZDJPY,H1: open #155714279 buy stop 0.10 NZDJPY at 64.319 sl: 64.134 tp: 64.460 ok<br / translate="no"> 2010.11.04 20:14:16 Assisted_Order_Script_2010.11.01 NZDJPY,H1:を実行したところ。11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: attempted OP_BUYSTOP 0.10000000 lots @64.31900000 sl:64.13400000 tp:64.46000000
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: Current EquityAtRisk = $22.90 and Current Lotsize = 0.1 and Profit Target = $17.45 for the 0.8:1 Profit:Loss ratio
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1: Max allowed EquityAtRisk = $23.00 and Max computed Lotsize = 0.1004(最大許容ロットサイズ
2010.11.04 20:14:15 Assisted_Order_Script_2010.11.01 NZDJPY,H1入力。Order_Type="BUY STOP"; OpenBidPrice=64.297; StopLossBidPrice=64.134; TakeProfitBidPrice=64.46; MaxPercentEquityAtRisk=1; MinLotOverRide=false.を入力。

さて、64.297のエントリー注文の試行価格は現在の市場価格に近すぎたので、orderreliableルーチンはそのためにエントリー価格を64.319に移動しましたが、それでも私は妥当な0.10ロットサイズを得ることができました。

この時点で、私はあなたがインクルードファイルを実装した方法および/またはあなたが出力を使用する方法で、あなたのコードで何かが故障していると結論付ける必要があるつもりです。 あなたは、私がこれ以上追い詰めるためにこれを検査するためにコードをアップロードする必要があります。

 

うん、米ドル建てのデモ口座 で、レバレッジは1:100だよ。EURJPYでBUY STOPで動かしてみたけど、今回はいい数字が出たみたいだね。エキスパート・ログによると


2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: 削除しました。
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1:uninit reason 0
2010.11.04 21:37:18 Assisted_Order_Script_2010.11.01 EURJPY,H1: open #155719095 buy stop 0.11 EURJPY at 115.843 sl:115.689 tp:115.885 ok
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: OP_BUYSTOP 0.11000000 lots @115.84300000 sl:115.68900000 tp:115.88500000 試みた。
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: 現在のEquityAtRisk = $20.95 and Current Lotsize = 0.11 and Profit Target = $5.71 for 0.3:1 Profit:Loss ratio
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1: Max allowed EquityAtRisk = $22.73 and Max computed Lotsize = 0.1193(最大許容ロットサイズ
2010.11.04 21:37:16 Assisted_Order_Script_2010.11.01 EURJPY,H1入力。Order_Type="BUY STOP"; OpenBidPrice=115.827; StopLossBidPrice=115.689; TakeProfitBidPrice=115.885; MaxPercentEquityAtRisk=1; MinLotOverRide=false.を入力します。
2010.11.04 21:36:23 Assisted_Order_Script_2010.11.01 EURJPY,H1: 正常にロードされました。
2010.11.04 21:34:16 Assisted_Order_Script_2010.11.01 EURJPY,H1:削除しました。
2010.11.04 21:34:11 Assisted_Order_Script_2010.11.01 EURJPY,H1: 正常にロードされました。



...そしてそれは保留中の買い停止注文を0.11ロットで出しました。そう、あなたの言うように、私のコードの中で何かが「故障」しているようです...(笑)。でも、あなたのコードを入れるときは、超注意していたんだけどな...何が原因なんだろう。ちょっとデバッグしてみますね。フィリップを困らせてごめんなさい


ありがとうございました。

Shawn

 

フィリップさんが投稿された新しいバージョンで新たに始めるべきでしょうか?


ショーン

 

最新のものを使うことに意味がある、私はそう思っています。

 

こんにちは、Phillip。数日前に投稿されたあなたの最新バージョンにアップグレードするために、私のEAを再び手術しようとしていたのですが、その投稿をもう一度読み返したところ、かなりの数の質問が残されていました。私のEAを破く前に、まずあなたに聞くべきだと思いました。


(1)2つの新しいインクルードファイルがあるとのことですが、これは何ですか?


Analyze_Currency_Symbol_2010.10.29.mqh (34.54 KB)

トレード_ポジション管理_2010.10.29.mqh (26.68 KB)


...古いStopLoss_Manager_2010.05.24.mqhはどうですか?そのファイルは、新しいバージョンでは全く必要なくなったのですか?


(2)あなたが言うところ。


「ステップ2:EAのトップに以下を追加し、添付ファイルに含まれるコール関数にアクセスできるようにする

#include <OrderReliable_2010.10.12.mqh> #include <Trade_Trader_Manager_2010.10.12.mqh

#include <Trade_Position_Management_2010.10.29.mqh>"


... これは新しいバージョンかOrderReliableでしょうか?LibOrderReliable.mqhを使っていたのですが。何か変更になったのでしょうか?また、新しいAnalyze_Currency_Symbol_2010.10.29.mqhファイルも含める必要はないのでしょうか?


(3) 新しいバージョンを使用するときに追加すると言うこのコードの行で。


double CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType) とあります。


... OpenPrice_NDとStopLossPrice_NDとは何ですか?これらの変数は、私が宣言する必要があるのでしょうか、それとも、インクルードファイルのどこかに埋め込まれているのでしょうか?また、この新しいバージョンのLotSize関数では、パラメータの数と順序がかなり変更されていますね?以前のバージョンでのLotSizeの呼び出しは


CurrentLotSize=LotSize(CurrentEquityAtRisk,CurrentStopLossPrice,CurrentOrderType,CurrentSymbolType,CurrentCounterPairForCross) となります。


(4) 前のバージョンのコードで、CurrentOrderType=OP_BUY を指定していたことに気づきました。このような違いがあるのでしょうか?



おせっかいで申し訳ないのですが、このようなことで少し困惑していました。


ありがとうございました。

Shawn

 

(1) You mention there's 2 new include files:


Analyze_Currency_Symbol_2010.10.29.mqh (34.54 KB)

トレード_ポジション管理_2010.10.29.mqh (26.68 KB)


... 古いStopLoss_Manager_2010.05.24.mqhはどうでしょうか?そのファイルは、新しいバージョンでは全く必要なくなったのですか?


なぜこの部分を私のオリジナルの投稿に追加したのか、エンドユーザーが利用するファイルの完全なセットを確保するため以外に、私にはよくわかりません。

私は個人的にそのストップロス・マネージャーの更新版を使用していますが、それはこのスレッドとは関係ありませんし、あなたが使いたいストップロス処理を実装すればいいのです。 私がこのスレッドでアップロードしたコードはストップロス・インクルード・ファイルに依存しないが、ストップロス価格を特定し、それをequityatrisk呼び出し関数に 送ることができるようにコードを正しく設定することに依存している。

(2) あなたが言うところ。


「ステップ2: あなたのEAのトップに以下を追加して、添付ファイルに含まれる呼び出し関数にアクセスできるようにします。

#include <OrderReliable_2010.10.12.mqh>を追加します。

#include <Trade_Position_Management_2010.10.29.mqh>" と書かれているところです。


...これは新しいバージョンかOrderReliableでしょうか?LibOrderReliable.mqhを使っていたのですが。何か変更になったのでしょうか?また、新しいAnalyze_Currency_Symbol_2010.10.29.mqhファイルも含める必要はないのでしょうか?

それは新しいバージョンで、このスレッドの最初のページの一番下の私の投稿の一番下にそのリンクを貼りました(私はそれにリンクしたいのですが、検索が壊れています、argh!)。

新しいバージョンは、ecnタイプのブローカーで透過的に動作するように修正しました。 注文をordersendreliableを通して送れば、ブローカーが成行注文でSLとTPを受け入れるかどうかは関係なく、orderreliableスクリプトがそれを処理してくれます。

(3) 新しいバージョンを使うときに追加すると言うこの行のコードでは


double CurrentLotSize=LotSize(CurrentEquityAtRisk,OpenPrice_ND,StopLossPrice_ND,CurrentOrderType) とあります。


... OpenPrice_NDとStopLossPrice_NDとは何ですか?これらの変数は、私が宣言する必要があるのでしょうか、それとも、インクルードファイルのどこかに埋め込まれているのでしょうか?また、この新しいバージョンのLotSize関数では、パラメータの数と順序がかなり変更されていますね?前のバージョンでのLotSizeの呼び出しは。

はい、これらはあなたのコードのある時点で宣言する必要がある変数で、新しいポジションを開く市場価格(OpenPrice_ND)とストップロス価格(StopLossPrice_ND)を代入します。

あるいは、私の変数の名前を、あなたがすでに使っているものに変更することもできます。 これらの変数はプレースホルダーと考え、適切な場所にあなたの変数を代入してください。

(4) 前バージョンの私のコードでは、CurrentOrderType=OP_BUYを指定していましたが、実際には買いの逆指値注文をしています。この違いは何でしょうか?
違いはありません。 重要なのは、ordertypeをそれぞれの呼び出し関数に正しく渡すことです。 コール関数は、オーダータイプに応じて正しい動作をするよう、すでにコード化されています。 もし、コール関数に正しいオーダータイプを渡さないのであれば、コール関数は間違いなく無効な結果を得ることになります。

もしあなたが質問しないなら、あなた自身が学ぶことを期待することはできません;)
 
1005phillip:

私は本当にエンドユーザーが描画するためのファイルの完全なセットを持っていることを確認する以外に、私は私の元の投稿にその部分を追加した理由はよく分からない。

私は個人的にそのストップロス・マネージャーの更新版を使用していますが、それはこのスレッドとは関係ありません。 私がこのスレッドでアップロードしたコードはストップロス・インクルード・ファイルに依存しないが、ストップロス価格を特定し、それをequityatrisk呼び出し関数に送ることができるようにコードを正しく設定することに依存している。



>>> OK!自分のストップロスを手に入れたので、それは必要ありません。



新しいバージョンです、このスレッドの最初のページの一番下の私の投稿の下にリンクを貼りました(リンクを貼りたいのですが、検索がBROKENになっています、アーッ!)。

新しいバージョンは、ecnタイプのブローカーで透過的に動作するように修正しました。 注文をordersendreliableを通して送れば、ブローカーが成行注文のSLとTPを受け入れるかどうかは関係なく、orderreliableスクリプトがそれを処理します。


>> OK、私はすでにOrderSendReliable2Stepを使っているので、私のコードはそのまま、既存のLibOrderReliable.mqhを使うことにします。それでも、新しい Analyze_Currency_Symbol_2010.10.29.mqh ファイルも含める必要はないのでしょうか?



はい、これらはコードのある時点で宣言する必要がある変数で、新しいポジションを開く市場価格(OpenPrice_ND)と損切り価格(StopLossPrice_ND)を代入する必要があります。

あるいは、私の変数の名前を、すでに使用している変数で変更することもできます。 これらの変数はプレースホルダーと考え、適切な場所にあなたの変数を代入してください。


>>> 了解です、私もそう思っていました。私が言ったこのコメントを読み飛ばしたようです --> "また、この新しいバージョンのLotSize関数では、パラメータの数と順序がかなり変更されていますね?"




違いはゼロです。 重要なのは、それぞれの呼び出し関数にordertypeを正しく渡すことです。 呼び出し側の関数は、オーダータイプに応じて正しい処理をするようにすでにコード化されています。 もし正しいordertypeを渡さないのであれば、呼び出し関数自体から間違いなく無効な結果を得ることになります。


>> OK!



これらはすべて良い質問です。もしあなたが質問しないなら、あなた自身が学ぶことを期待することはできません;)


>>>やってみますありがとう、Phillip。


Shawn


 

>>>新しいAnalyze_Currency_Symbol_2010.10.29.mqhファイルも含める必要はないのでしょうか?

EA内ではありませんが、Trade Position Managementのインクルードファイルから呼び出されるため、インクルードディレクトリにこのファイルが必要です。

EA内に#include<Trade_Position_Management_2010.10.29.mqh> を置くことでTrade_Position_Management_2010.10.29.mqh と Analyze_Currency_Symbol_2010.10.29.mqhリンク したことになるのです。

>>また、今回のLotSize関数の 新バージョンでは、パラメータの数や順番がかなり変わっていますね。

CurrentSymbolTypeやCurrentCounterPairForCrossのベースは不要になりました。

トレードポジションファイルの中を見ると、equityatriskの項目があり、関数の使用方法についてのコメントがあります。 これらは役に立つかもしれませんが、どの程度わかりやすいかはわかりません。

 


MetaEditor mq4 で # include の行を入れたファイルはコンパイルできません。
# include の行を入れた mq4 ファイルもコンパイルできません。
のみ有効
# include <stderror.mqh>
# include <stdlib.mqh>
# Include <WinUser32.mqh>