如何编码? - 页 274

 

不幸的是,一旦你打开一个订单,就没有办法改变评论。似乎metatrader只能通过注释字段向一些经纪商提供部分平仓回溯,然后他们决定完全关闭它,不让我们(凡人)改变。

JohnCrawdford:
你好。

有什么方法可以在订单创建后改变OrderComment吗?

我有一个EA,在可能达到的关键点上创建挂单,但有时由于图表上不理想的快速移动,这些订单必须被取消/删除,因此不可能使用票号来识别每个订单,因为每个关键点订单可能被打开和取消/删除多次。因此,EA使用一个唯一的OrderComment来识别每个订单,但每隔一段时间,运行EA的电脑就会出现故障,或者互联网连接出现故障,这就会扰乱关键点订单的识别,因此,改变OrderComment以避免EA在没有完成之前的执行就重新启动后产生的混乱而导致的错误,就变得非常有用。

非常令人困惑,对吗?

P.S.神奇的数字被用来识别由EA创建的订单,所以我不能用这个数字来单独识别每个订单。

如果有人能告诉我是否有办法改变OrderComments,我将非常感激。

事先谢谢你。
 

如何在EA上进行动态编译?

大家好!

我想知道如何创建一个具有动态编译(F5)的EA,例如每20秒一次。

我看到F5函数是由VK_F5定义的(感谢Coders Guru!)。但如何运行?

这是我的EA

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

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

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

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

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

#属性 indicator_chart_window

#属性 indicator_buffers 1

#属性 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;

外部bool ShiftOn = false;

外部bool AltOn = false。

外部字符串 HotKey = "A";

*/

#import "user32.dll"

bool GetAsyncKeyState(int nVirtKey);

#import

#include //for MessageBoxA

//---- MessageBox() Flags

#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

#define VK_5 53

#define VK_6 54

#define VK_7 55

#define VK_8 56

#define VK_9 57

#define VK_A 65

#define VK_B 66

#define VK_C 67

#define VK_D 68

#define VK_E 69

#define VK_F 70

#define VK_G 71

#define VK_H 72

#define VK_I 73

#define VK_J 74

#define VK_K 75

#define VK_L 76

#define VK_M 77

#define VK_N 78

#define VK_O 79

#define VK_P 80

#define VK_Q 81

#define VK_R 82

#define VK_S 83

#define VK_T 84

#define VK_U 85

#define VK_V 86

#define VK_W 87

#define VK_X 88

#define VK_Y 89

#define VK_Z 90

#define VK_LBUTTON 1 //鼠标左键

#define VK_RBUTTON 2 //鼠标右键

#define VK_CANCEL 3 //控制中断处理

#define VK_MBUTTON 4 //鼠标中键(三键鼠标)

#define VK_BACK 8 //BACKSPACE键

#define VK_TAB 9 //TAB键

#define VK_CLEAR 12 //清空键

#define VK_RETURN 13 //ENTER键

#define VK_SHIFT 16 //SHIFT键

#define VK_CONTROL 17 //CTRL键

#define VK_MENU 18 //ALT键

#define VK_PAUSE 19 //PAUSE键

#define VK_CAPITAL 20 //CAPS LOCK键

#define VK_ESCAPE 27 //ESC键

#define VK_SPACE 32 //SPACEBAR

#define VK_PRIOR 33 //上页键

#define VK_NEXT 34 //page down键

#define VK_END 35 //结束键

#define VK_HOME 36 //HOME键

#define VK_LEFT 37 //LEFT ARROW键

#define VK_UP 38 //上箭头键

#define VK_RIGHT 39 //右方向ROW键

#define VK_DOWN 40 //DOWN箭头键

#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右键(自然键盘)

#define VK_APPS 93 //应用程序键(自然键盘)

#define VK_SLEEP 95 //电脑睡眠键

#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 /小数键

#define VK_DIVIDE 111 //除法键

#define VK_F1 112 //F1键

#define VK_F2 113 /F2键

#define VK_F3 114 /F3键

#define VK_F4 115 //F4键

#define VK_F5 116 //F5键

#define VK_F6 117 //F6键

#define VK_F7 118 //F7键

#define VK_F8 119 //F8键

#define VK_F9 120 //F9键

#define VK_F10 121 //F10键

#define VK_F11 122 /F11键

#define VK_F12 123 /F12键

#define VK_F13 124 //F13 key

#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 //左控制键

#define VK_RCONTROL 163 //右控制键

#define VK_LMENU 164 //左边的MENU键

#define VK_RMENU 165 //右键 MENU

//---- 缓冲区

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_ZIGZAG);

//SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,Buffer);

SetIndexEmptyValue(0,EMPTY_VALUE)。

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

//----

return(0);

}

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

//|Custor指示器的去初始化功能|

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

int deinit()

{

Comment("")。

return(0);

}

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

//|自定义指标迭代函数|

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

如果(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 ;

/*

//

如果(Seconds()==20)

{

已编译或VK_F5

}

如果(Seconds()==40)

{

已编译或VK_F5

}

*/

Buffer= sar_m5;

}

return(0);

}

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

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

最好的问候test_a_sar_m5.mq4test_a_sar_m5.mq4

附加的文件:
 

帮助

我正面临着一个问题,因为止损,如果有人能给我答案的话。问题是在一些metatrader图表中,价格柱值显示为五位数(1.4545),但在我的metatrader中显示为六位数(1.45456)。因此,当它试图根据你的系统设置止损时,止损值 变成200点到400点。

谢谢你的帮助。

 

马丁格尔资金管理 中的凯利策略

任何人都可以将其编辑为凯利策略或除以10。

我的手数是0.10,当开始的股本是250美元时,这应该改变为0.11,当股本增长到500美元时。

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

如果(Money_management)

{

switch(AccountType)

{

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

case 1: lotsi=NormalizeDouble((risk*AccountEquity())/100000,2); break;

case 2: lotsi=NormalizeDouble((risk*AccountEquity())/1000,2); break;

默认情况: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在两个不同的时间段会持有不同的值。

如何解决这个问题?

 
khatrisushil:
我正面临着一个问题,因为止损,如果有人能给我答案的话。问题是在一些metatrader图表中,价格柱值显示为五位数(1.4545),但在我的metatrader中,它显示为六位数(1.45456)。因此,当它试图根据你的系统设置止损时,止损值变成200点至400点。 我不知道如何解决这个问题。

拳头需要检测经纪人的什么数字

在代码中你应该能够检测数字的类型,有足够的数字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, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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 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 + 0);

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

double Sell1_2 = 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_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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 = 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);

如果(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的支持,他们告诉我因为即时执行和市场执行不同。所以我找了一个对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, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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 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 + 0);

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

double Sell1_2 = 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_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

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 = 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);

如果(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的支持,他们告诉我因为即时执行和市场执行不同。所以我找了一个对EA和交易有经验的人。请帮助我修改我的EA。

非常感谢您!

[lang=pl]我认为这可能是SL/TP的问题。请给我看你的代码,或你发送订单的部分

你发送订单的部分。

谢谢。

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]我认为这可能是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在两个不同的时间段会持有不同的值。

如何解决这个问题?

嗨,Mtuppers。

原始的当前时间框架。

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

添加你想要的时间段,并改变变量名称,使其不同(clr和clr2)。

double clr2 = iCustom(NULL,Period_H1, "LSMA in Color",14,1500,5,0); // Period_H1时间框架

在 "彩色LSMA "指标中--有3个颜色的缓冲区,而不是只有一个,所以你可以用3个iCustom语句来获得它们。

下面是缓冲区的编号。

SetIndexBuffer(2,ExtMapBuffer1)。

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexBuffer(0,ExtMapBuffer3);

SetIndexBuffer(3,sum);

SetIndexBuffer(4,wt);

SetIndexBuffer(5,clr);

* 注意在你的例子中,你使用的是Buffer 0,所以你实际上只在ExtMapBuffer3中得到一种颜色。clr "缓冲区是Buffer 5。

下面是指标中的颜色缓冲区分配。

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

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

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

希望这有帮助。

罗伯特