int order_type; if(OrderSelect(12, SELECT_BY_POS)==true) { order_type=OrderType(); // ... } else Print("OrderSelect() has returned an error - " ,GetLastError())。
extern double Lot=0.01; // Жестко заданное колич. лотов datetime time; //--------------------------------------------------------------- 2 -- int start() { int Total;
bool Ans =false, // Ответ сервера после закрытия Cls_B=false, // Критерий для закрытия Buy Cls_S=false, // Критерий для закрытия Sell Opn_B=false, // Критерий для открытия Buy Opn_S=false; // Критерий для открытия Sell
我如何确定未结订单类型?
订单类型()
实际上,你应该从教科书开始...:)或者至少在MetaEditor中使用F1
OP_BUY - 买入位置。
OP_SELL - 卖出头寸。
OP_BUYLIMIT - 在达到指定水平时,当前价格高于该水平的挂单购买。
OP_BUYSTOP - 当达到指定水平时,当前价格低于该水平的挂单买入。
OP_SELLLIMIT - 当达到指定水平时,当前价格低于该水平的挂单卖出。
OP_SELLSTOP - 当达到指定水平时,当前价格高于该水平的挂单卖出。
该订单必须使用OrderSelect() 函数进行预选。
一个浮点 值是一个实数,如双数
用一个int 类型的变量来代替数字
例如,int dg=MarketInfo ( Symbol(), MODE_DIGITS)。
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;
bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell
//--------------------------------------------------------------- 3 --
// Учёт ордеров
for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;
if(Total!=0 || time==Time[1])return;
static int KolBars;
if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)
{
KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия
}
// Торговые критерии
// Критерий откр. Buy
Opn_B=true;
//--------------------------------------------------------------- 7 --
if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}
}
请帮助,我已经是第三次问了。一个基本的EA,在一个新的蜡烛出现时建立一个买入头寸(前提是之前的2根蜡烛是绿色的),并在建立头寸的蜡烛收盘时或下一根蜡烛收盘时关闭该头寸。
你在上面看到的那个,每次出现新的蜡烛就开仓,对开仓标准没有反应,但我不明白如何平仓,我在教程和论坛上都找不到。
浮点值是一个双倍 类型的实数
用一个int 类型的变量来代替数字
例如,int dg=MarketInfo ( Symbol(), MODE_DIGITS)。
他们给我写道:"NormalizeDouble(),检查最大/最小手数限制,如果是五位数--将止损和利润增加10倍"。
文档中说:"将浮点数舍入到指定的精度。计算出的StopLoss和TakeProfit值,以及挂单的开盘价 必须被归一化为精度,其值被存储在预定义的变量Digits 中"。
我没有在教科书中找到它。 我知道我需要用NormalizeDouble将当前价格、StopLoss和TakeProfit归一化 --- 我应该如何归一化?
双重值 -- 我可以使用例如Prise来代替双重值。
int digits -- 而这个变量dg等于MarketInfo( Symbol(), MODE_DIGITS);??
他们给我写道:"NormalizeDouble(),检查最大/最小手数限制,如果是五位数--将止损和利润增加10倍"。
文档中说:"将浮点数舍入到指定的精度。计算出的StopLoss和TakeProfit值,以及挂单的开盘价 必须被归一化为精度,其值被存储在预定义的变量Digits 中"。
我没有在教程中找到,我知道我需要使用NormalizeDouble------将当前价格、StopLoss和TakeProfit正常化? 如果是这样,具体怎么做?
双重值 -- 取而代之,我可以设置例如Prise
int digits -- 而这个变量dg等于MarketInfo( Symbol(), MODE_DIGITS);??
int StopLoss=50; // StopLoss,单位为点。
int TakeProfit=150; // TakeProfit,以点为单位。
intOrderDistance=50; // 待定的订单距离,单位为点。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // 报价货币中的点数大小。
int dg=MarketInfo(Symbol(),MODE_DIGITS); //符号价格中小数点后的数字。
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // 允许的最小止损/获利水平,单位为点。
double pa=MarketInfo(Symbol(), MODE_ASK); // Ask price
double pb=MarketInfo(Symbol(), MODE_BID); // 买入价
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // 对买入头寸的StopLoss价格水平进行标准化处理。
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // 对Bid头寸的TakeProfit价格水平进行标准化。
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // 归一化StopLoss价格水平,用于卖出头寸。
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // 对卖出头寸的TakeProfit价格水平进行标准化。
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); //对买入挂单的价格水平进行标准化。
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // 归一化价格,用于下一个卖出挂单。
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // 对买入挂单的StopLoss的价格水平进行正常化。
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // 将买入挂单的TakeProfit的价格水平正常化。
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // 对待定卖单的StopLoss的价格水平进行标准化。
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // 对待定卖单的TakeProfit的价格水平进行标准化。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
弄清楚...:)
不要忘记StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL)。
检查设置停止和收货的最小距离,使其不低于这个值
int StopLoss=50; // StopLoss的点数
int TakeProfit=150; //TakeProfit(点数)。
intOrderDistance=50; // 待定的订单放置距离,单位是点。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // 报价货币中的点数大小。
int dg=MarketInfo(Symbol(),MODE_DIGITS); //符号价格中小数点后的数字。
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // 允许的最小止损/获利水平,单位为点。
double pa=MarketInfo(Symbol(), MODE_ASK); // Ask price
double pb=MarketInfo(Symbol(), MODE_BID); // 买入价
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // 对买入头寸的StopLoss价格水平进行标准化处理。
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // 对Bid头寸的TakeProfit价格水平进行标准化。
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // 对卖出头寸的StopLoss价格水平进行标准化处理。
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // 对卖出头寸的TakeProfit价格水平进行标准化。
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); //对买入挂单的价格水平进行标准化。
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // 归一化价格,用于下一个卖出挂单。
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // 对买入挂单的StopLoss的价格水平进行正常化。
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // 将买入挂单的TakeProfit的价格水平正常化。
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // 对待定卖单的StopLoss的价格水平进行标准化。
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // 对待定卖单的TakeProfit的价格水平进行标准化处理。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
弄清楚...:)
不要忘记StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL)。
检查设置停止和收货的最小距离,使其不低于这个值
我会研究的!)
重新安装了Windows。警报 窗口不再弹出。有声音通知,有日志记录,但浮动窗口不会弹出。
我清理了终端,重新编译了所有东西。可能是什么原因?
我如何创建一个函数并调用它?
不知道多少次了,阅读课本,研究材料......:)