コーディングの方法は? - ページ 274

 

残念ながら、一度注文を出したらコメントを変更 する方法はありません。メタトレーダーは、コメント欄を通してのみ、部分的なクローズのバックトラックを一部のブローカーに提供することができたようで、その後、我々(単なる人間)への変更から完全に閉鎖することを決めたようです。

JohnCrawdford:
こんにちは。

注文が作成された後、OrderCommentを変更する方法はありますか?

私は、到達しそうなキーポイントに保留中の注文を作成するEAを持っていますが、時々、チャート上の望ましくない速い動きのために、これらの注文はキャンセル/削除されなければなりません。しかし、EAを実行するコンピュータが故障したり、インターネット接続に失敗したりすると、キーポイント注文の識別が台無しになるため、EAが前回の実行を終了せずに再起動した後に生じる混乱によるエラーを避けるために、OrderCommentを変更することが有用となります。

非常にわかりにくいですよね?

追伸:マジックナンバーはEAが作成した注文を識別するために使用しているので、その番号で個々の注文を識別することはできません。

もし、OrderCommentsを変更する方法があれば、どなたか教えていただけると幸いです。

よろしくお願いします。
 

EAでダイナミックコンパイルを行うには?

こんにちは、世界!

20秒ごとにダイナミックコンパイル(F5)をするEAを作る方法を知りたいです。

私は、F5関数がVK_F5によって定義されていることを見ました(Coders Guruに感謝!)。しかし、どのように実行するのですか?

これは私のEAです

**********************************

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

#property copyright "Copyright © 2008, Systematic-Forex".

#property link "http://www.systematic-forex.com"

#property indicator_chart_window (インジケーターチャートウィンドウ)

#property indicator_buffers 1

#property indicator_color1 LightGray // 黄色

extern int TimeFrame = 5;

/*

extern string help_magic_number = "クロージングオプション3 - マジックナンバーによるクロージングを使用する場合に設定します";

extern int magic_number = 0; // クロージングオプション3 - マジックナンバーでクロージングを使用する場合に設定します。

extern string help_comment_text = "閉じるオプション4 - コメントで閉じる" を使用する場合に設定します。

extern string comment_text = "";

extern bool HotKeyOn = true;

extern bool CtrlOn = true;

extern bool ShiftOn = false;

extern bool AltOn = false;

extern string HotKey = "A";

*/

#import "user32.dll"

bool GetAsyncKeyState(int nVirtKey);

#import

#include //for MessageBoxA

//---- MessageBox() フラグ

#define MB_OK 0x00000000

#define MB_OKCANCEL 0x00000001

#define MB_ABORTRETRYIGNORE 0x00000002

#define MB_YESNOCANCEL 0x00000003

#define MB_YESNO 0x00000004

#define MB_RETRYCANCEL 0x00000005

#define MB_ICONHAND 0x00000010

#define MB_ICONQUESTION 0x00000020

#define MB_ICONEXCLAMATION 0x00000030

#define MB_ICONASTERISK 0x00000040

#define MB_USERICON 0x00000080

#define MB_ICONWARNING MB_ICONEXCLAMATION

#define MB_ICONERROR MB_ICONHAND

#define MB_ICONINFORMATION MB_ICONASTERISK

#define MB_ICONSTOP MB_ICONHAND

#define MB_DEFBUTTON1 0x00000000

#define MB_DEFBUTTON2 0x00000100

#define MB_DEFBUTTON3 0x00000200

#define MB_DEFBUTTON4 0x00000300

#define MB_APPLMODAL 0x00000000

#define MB_SYSTEMMODAL 0x00001000

#define MB_TASKMODAL 0x00002000

#define MB_HELP 0x00004000 // ヘルプボタン

#define MB_NOFOCUS 0x00008000

#define MB_SETFOREGROUND 0x00010000

#define MB_DEFAULT_DESKTOP_ONLY 0x00020000

#define MB_TOPMOST 0x00040000

#define MB_RIGHT 0x00080000

#define MB_RTLREADING 0x00100000

#define KEYEVENTF_EXTENDEDKEY 0x0001

#define KEYEVENTF_KEYUP 0x0002

#define VK_0 48

#define VK_1 49

#define VK_2 50

#define VK_3 51

#define VK_4 52

#定義済み VK_5 53

#定義済み VK_6 54

#定義済み VK_7 55

#定義済み VK_8 56

#定義済み VK_9 57

#定義済み VK_A 65

#定義済み VK_B 66

#定義済み VK_C 67

#定義済み VK_D 68

#定義済み VK_E 69

#定義済み VK_F 70

#定義済み VK_G 71

#定義済み VK_H 72

#定義済み VK_I 73

#定義済み VK_J 74

#定義済み VK_K 75

#定義済み VK_L 76

#定義済み VK_M 77

#定義済み VK_N 78

#定義済み VK_O 79

#定義済み VK_P 80

#定義済み VK_Q 81

#定義済み VK_R 82

#定義済み VK_S 83

#定義済み VK_T 84

#定義済み VK_U 85

#定義済み VK_V 86

#定義済み VK_W 87

#定義済み VK_X 88

#定義済み VK_Y 89

#定義済み VK_Z 90

#define VK_LBUTTON 1 //マウスの左ボタン

#define VK_RBUTTON 2 //マウスの右ボタン

#define VK_CANCEL 3 //コントロールブレイク処理

#define VK_MBUTTON 4 //マウスの中ボタン(3ボタンマウス)

#define VK_BACK 8 //BACKSPACE キー

#define VK_TAB 9 //TAB キー

#define VK_CLEAR 12 //CLEARキー

#define VK_RETURN 13 //ENTERキー

#define VK_SHIFT 16 //SHIFT キー

#定義 VK_CONTROL 17 //CTRLキー

#define VK_MENU 18 //ALTキー

#define VK_PAUSE 19 //PAUSEキー

#定義 VK_CAPITAL 20 //CAPS LOCK キー

#定義 VK_ESCAPE 27 //ESCキー

#define VK_SPACE 32 //スペースバー

#define VK_PRIOR 33 //PAGE UP キー

#define VK_NEXT 34 //PAGE DOWN キー

#define VK_END 35 //ENDキー

#define VK_HOME 36 //HOME キー

#define VK_LEFT 37 //左矢印キー

#define VK_UP 38 //上方向キー

#define VK_RIGHT 39 //RIGHT ARROW key

#define VK_DOWN 40 //下方向キー

#define VK_PRINT 42 //PRINT キー

#define VK_SNAPSHOT 44 //PRINT SCREEN キー

#define VK_INSERT 45 //INS キー

#define VK_DELETE 46 //DEL キー

#define VK_HELP 47 //HELPキー

#define VK_LWIN 91 //左 Windows キー (Microsoft® Natural® キーボード)

#define VK_RWIN 92 //右 Windows キー(Natural キーボード)

#define VK_APPS 93 //アプリケーションキー(Naturalキーボード)

#define VK_SLEEP 95 //Computer Sleep キー

#define VK_NUMPAD0 96 //数値キーパッド 0 キー

#define VK_NUMPAD1 97 //テンキー 1 キー

#define VK_NUMPAD2 98 //テンキー 2 キー

#define VK_NUMPAD3 99 //テンキー 3 キー

#define VK_NUMPAD4 100 //テンキー 4 キー

#define VK_NUMPAD5 101 //テンキー 5 キー

#define VK_NUMPAD6 102 //テンキー 6 キー

#define VK_NUMPAD7 103 //テンキー 7 キー

#define VK_NUMPAD8 104 //テンキー 8 キー

#define VK_NUMPAD9 105 //テンキー 9 キー

#define VK_MULTIPLY 106 //乗算キー

#define VK_ADD 107 //加算キー

#define VK_SEPARATOR 108 //セパレータキー

#define VK_SUBTRACT 109 //減算キー

#define VK_DECIMAL 110 //10進数キー

#define VK_DIVIDE 111 //Divideキー

#define VK_F1 112 //F1 キー

#define VK_F2 113 //F2 キー

#定義済み VK_F3 114 //F3 キー

#定義済み VK_F4 115 //F4 キー

#定義済み VK_F5 116 //F5 キー

#定義済み VK_F6 117 //F6 キー

#定義済み VK_F7 118 //F7 キー

#定義済み VK_F8 119 //F8 キー

#定義済み VK_F9 120 //F9 キー

#定義済み VK_F10 121 //F10 キー

#定義済み VK_F11 122 //F11 キー

#定義済み VK_F12 123 //F12 キー

#define VK_F13 124 //F13 キー

#define VK_NUMLOCK 144 // NUM LOCK キー

#define VK_SCROLL 145 //SCROLL LOCK キー

#define VK_LSHIFT 160 //左SHIFTキー

#define VK_RSHIFT 161 //右SHIFTキー

#define VK_LCONTROL 162 //左CONTROLキー

#define VK_RCONTROL 163 //右CONTROLキー

#define VK_LMENU 164 //左MENUキー

#define VK_RMENU 165 //右メニューキー

//---- バッファ

double Buffer[];

int i,j;

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- インジケータ

SetIndexStyle(0,DRAW_LINE)を設定します。

//SetIndexStyle(0,DRAW_SECTION)を設定します。

//SetIndexStyle(0,DRAW_ARROW)を設定します。

//SetIndexStyle(0,DRAW_HISTOGRAM); /SetIndexStyle(0,DRAW_HISTOGRAM)

//SetIndexStyle(0,DRAW_ZIGZAG) を設定します。

//SetIndexStyle(0,DRAW_NONE); /SetIndexStyle(0,DRAW_NONE)。

SetIndexBuffer(0,Buffer)を設定します。

SetIndexEmptyValue(0,EMPTY_VALUE)を設定します。

Comment("\n"+"test_A_sar");

//----

return(0);

}

//+------------------------------------------------------------------+

//| カストマーインジケータ初期化関数

//+------------------------------------------------------------------+

int deinit()

{

Comment("");

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケータ反復処理関数

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(int i=0; i<limit; i++)

{

datetime i_Time = iTime(NULL, 0, i);

int j = iBarShift(NULL, TimeFrame, i_Time, bool false);

double sar_m5 = iSAR(NULL, PERIOD_M5 , 0.02, 0.2, j + 0);

double var_indicateur = sar_m5 ;

/*

//

if(Seconds()== 20)

{

コンパイル済みまたはVK_F5

}

if(秒数()== 40)

{

コンパイル済みまたはVK_F5

}

*/

Buffer= sar_m5;

return(0);

}

//+------------------------------------------------------------------+

**********************************

よろしくお願いしますtest_a_sar_m5.mq4test_a_sar_m5.mq4

ファイル:
 

ヘルプ

あるメタトレーダーのチャートではプライスバーの値が5桁(1.4545)で表示されますが、私のメタトレーダーでは6桁(1.45456)で表示されます。

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

 

マーチンゲールのマネーマネージメントにおける ケリー戦略

どなたか、ケリー戦略や10で割ったものに編集してください。

資本が250ドルからスタートしたときのロットサイズは0.10ですが、資本が500ドルになったときに0.11に変更する必要があります。

-------------------------------------------------------------------

if(Money_management)

{

switch(AccountType)

{

case 0: lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1); break;

case 1: lotsi=NormalizeDouble((リスク*AccountEquity())/100000,2);break。

ケース2:lotsi=NormalizeDouble((risk*AccountEquity())/1000,2);ブレーク。

デフォルト:lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1);break;

-------------------------------------------------------------------

ありがとうございます。

 

カスタムに関する質問

icustomスレッドに投稿したのは知っていますが...

コードグルのコードによると

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

どのように私は同じバッファで別の時間枠を取得することができますか?

同じclrが2つの異なるタイムフレームで異なる値を保持することに注意してください。

どのようにそれを回避するのですか?

 
khatrisushil:
メタトレーダーのチャートではプライスバーの値が5桁(1.4545)で表示されますが、私のメタトレーダーでは6桁(1.45456)で表示されます。

ブローカーを検出する必要があります。

を検出する必要があります。桁のEAコーディングについては、十分な例があります。

したがって、4桁または5桁のブローカーを処理することができるいくつかのEAを勉強したいと思うかもしれません。

 

マーケット実行ブローカーで私のEAを修正するのを手伝ってください!

こんにちは、私はEAの初心者です、私は悲劇的なシグナルを持つEAを編みました。

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Buy2_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Buy3_1 = iSARP(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1); double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0); double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1); double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0); double Sell1_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1); double Sell1_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_SIGNAL, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1); double Sell1_1 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Sell3_1 = iMac(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1); double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0); double Sell4_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1); double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0); double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

if (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL;

しかし、私はなぜ私のEAがインスタント実行(私はそう思う)で正常に動作することができますが、市場実行では何もしないのか理解できません。私はeasy-forexのトレーダーで、彼らのデモ口座はインスタント実行で私のEAは正常に動作しますが、市場実行でライブ口座で私のEAは何もしない、私はそれがそのMT4上でチャートを分析できない、エラーではなく、何もしない意味です。

Easy-Forexのサポートに連絡したところ、Instant executionとMarket executionは違うからと言われました。そこで、EAと取引について経験のある方を探しています。お願いします!私のEAを修正するのを助けてください。

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

 
alvintran:
こんにちは、私はEAの初心者ですが、悲劇的なシグナルを使ったEAを作りました。

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Buy2_2 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Buy3_1 = iSARP(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1); double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0); double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1); double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0); double Sell1_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1); double Sell1_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_SIGNAL, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1); double Sell1_1 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0); double Sell3_1 = iMac(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1); double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0); double Sell4_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1); double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0); double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

if (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL;

しかし、私はなぜ私のEAがインスタント実行(私はそう思う)で正常に動作することができますが、市場実行では何もしないのか理解できません。私はeasy-forexのトレーダーで、彼らのデモ口座はインスタント実行で私のEAは正常に動作しますが、市場実行でライブ口座で私のEAは何もしない、私はそれがそのMT4上でチャートを分析できない、エラーではなく、何もしない意味です。

Easy-Forexのサポートに連絡したところ、Instant executionとMarket executionは違うからと言われました。そこで、EAと取引について経験のある方を探しています。お願いします!私のEAを修正するのを助けてください。

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

[SL/TPに問題があるのではと思います。あなたのコード、または注文を送る部分を見せてください。

注文を送るところを見せてください。

乾杯。

Grzesiek[/lang]

 
g.pociejewski:
[SL/TPの問題だと思います。あなたのコード、または部分を見せてください

注文を送信する場所

乾杯。

Grzesiek[/lang]

いやいや、SL/TPの問題ではありません、私はその問題を知っています、それは何もしないと言いました、それはデモ口座(即時実行か 何か私は知らない)で正常に動作しますが、ライブ口座では動作しません、何の問題もありません、ただ何もしないだけです。

このEAは私が書いたもので、購入でもなく、試用版でもなく、どんな制限もありません。

お願い!助けて

 

タイムフレームの追加とバッファの取得

mtuppers:

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

同じバッファで別の時間枠を取得するにはどうしたらいいですか?

同じclrが2つの異なるタイムフレームで異なる値を保持することに注意してください。

どのようにそれを回避するのですか?

こんにちは、Mtuppersです。

オリジナルの現在のタイムフレーム

ダブル clr = iCustom(NULL,0, "LSMA in Color",14,1500,5,0);

好きなTime periodを追加し、変数名を変更して異なるものにします(clrとclr2)。

double clr2 = iCustom(NULL,Period_H1, "LSMA in Color",14,1500,5,0); // Period_H1 タイムフレーム

LSMA in Color" インジケータでは - 色のバッファは1つだけでなく3つあるので、3つのiCustomステートメントを使用してすべてを取得することができます。

以下はバッファの番号 です。

SetIndexBuffer(2,ExtMapBuffer1)。

SetIndexBuffer(1,ExtMapBuffer2)を設定します。

SetIndexBuffer(0,ExtMapBuffer3)を設定します。

SetIndexBuffer(3,sum)を設定します。

SetIndexBuffer(4,wt)を設定します。

SetIndexBuffer(5,clr)。

* この例では、Buffer 0 を使用しているため、ExtMapBuffer3 には実際には 1 色しか入っていないことに注意してください。clr" バッファはバッファ 5 です。

以下は、インジケータでのカラーバッファの割り当てです。

ExtMapBuffer3[shift] = wt[shift]; //赤色

ExtMapBuffer2[shift] = wt[shift]; //緑色

ExtMapBuffer1[shift] = wt[shift];//黄

お役に立てれば幸いです。

ロバート