[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 922

 
_SS_:
我如何确定未结订单类型?

订单类型()

实际上,你应该从教科书开始...:)或者至少在MetaEditor中使用F1

intOrderType( )
返回当前选择的订单的订单类型。它可以是以下数值之一。
OP_BUY - 买入位置。
OP_SELL - 卖出头寸。
OP_BUYLIMIT - 在达到指定水平时,当前价格高于该水平的挂单购买。
OP_BUYSTOP - 当达到指定水平时,当前价格低于该水平的挂单买入。
OP_SELLLIMIT - 当达到指定水平时,当前价格低于该水平的挂单卖出。
OP_SELLSTOP - 当达到指定水平时,当前价格高于该水平的挂单卖出。
该订单必须使用OrderSelect() 函数进行预选。
例子。
 int order_type; if(OrderSelect(12, SELECT_BY_POS)==true) { order_type=OrderType(); // ... } else Print("OrderSelect() has returned an error - " ,GetLastError())。
 
gheka:

doublenormalizeDouble( double value, int digits)

价值 - 浮点值。---它是什么?
数字 - 精度格式,小数点后的位数(0-8)。---如1.29800是5位数,对吗?

一个浮点 值是一个实数,如双数

用一个int 类型的变量来代替数字

例如,int dg=MarketInfo ( Symbol(), MODE_DIGITS)。

 
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

//--------------------------------------------------------------- 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根蜡烛是绿色的),并在建立头寸的蜡烛收盘时或下一根蜡烛收盘时关闭该头寸。

你在上面看到的那个,每次出现新的蜡烛就开仓,对开仓标准没有反应,但我不明白如何平仓,我在教程和论坛上都找不到。

 
artmedia70:

浮点值是一个双倍 类型的实数

用一个int 类型的变量来代替数字

例如,int dg=MarketInfo ( Symbol(), MODE_DIGITS)。


他们给我写道:"NormalizeDouble(),检查最大/最小手数限制,如果是五位数--将止损和利润增加10倍"。


文档中说:"将浮点数舍入到指定的精度。计算出的StopLoss和TakeProfit值,以及挂单的开盘价 必须被归一化为精度,其值被存储在预定义的变量Digits 中"。

我没有在教科书中找到它。 我知道我需要用NormalizeDouble将当前价格、StopLoss和TakeProfit归一化 --- 我应该如何归一化?

doublenormalizeDouble( double value, int digits)

双重值 -- 我可以使用例如Prise来代替双重值。

int digits -- 而这个变量dg等于MarketInfo( Symbol(), MODE_DIGITS);??

 
gheka:


他们给我写道:"NormalizeDouble(),检查最大/最小手数限制,如果是五位数--将止损和利润增加10倍"。


文档中说:"将浮点数舍入到指定的精度。计算出的StopLoss和TakeProfit值,以及挂单的开盘价 必须被归一化为精度,其值被存储在预定义的变量Digits 中"。

我没有在教程中找到,我知道我需要使用NormalizeDouble------将当前价格、StopLoss和TakeProfit正常化? 如果是这样,具体怎么做?

doublenormalizeDouble( double value, int digits)

双重值 -- 取而代之,我可以设置例如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)。

检查设置停止和收货的最小距离,使其不低于这个值

 
artmedia70:

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。警报 窗口不再弹出。有声音通知,有日志记录,但浮动窗口不会弹出。

我清理了终端,重新编译了所有东西。可能是什么原因?

 
_SS_:
我如何创建一个函数并调用它?
我已经说过无数次了,请阅读教科书,学习基础知识......。:)
 
artmedia70:
不知道多少次了,阅读课本,研究材料......:)
我试过了,没有用!