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

 

我采用了概率理论,从统计学上看,如果开盘价在50点以内,那么开盘时10点的利润就比较容易达到--如果也有10点的止损(甚至点差也不是问题),那么趋势的变化就是一件好事......

添加一个止损,不考虑StepStop

//+------------------------------------------------------------------+
//| Volfram.mq4 | |
//| Vova-x@list.ru |
//| |
//+------------------------------------------------------------------+
#财产版权"Vova-x@list.ru"
#属性链接""
//-----------------------------------------
外部TakeProfit=10。
外部int StepStop=45;
外来的双倍Lots=0.01。
外部 bool MoneyManagement=true。
外部inttern MarginPercent=10。
//-------------------------------------------
int level_sell_stop;
int level_buy_stop;

//----------------------------------------------------------
空白的init()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL)。
//打印("levelbuy_stop: "+minstop;)
}
//-----------------------------------------------------------
空白启动()。
{
if (!IsTradeAllowed()) return;
level_buy_stop=0。
level_sell_stop=0。
StepingStop()。
StepingPendings()。
如果(TotalBuy ()==0 && TotalBuyStop ()==0) SetBuyStop ()。
如果(TotalSell()==0 && TotalSellStop()==0) SetSellStop()。
Comment("Level Buy Stop=",level_buy_stop*Point,
"n", "Level Sell Stop=",level_sell_stop*Point)。
}
//---------------------------------------------------------------------------------------------
空白的StepingStop()
{
如果(StepStop<1)返回。
int ask, bid, open, stop, x;
双重损失。
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderSymbol()!=Symbol())
如果(OrderType()==OP_BUY)
{
bid=MathRound(Bid/Point)。
open=MathRound(OrderOpenPrice()/Point)。
stop=MathRound(OrderStopLoss()/Point)。
x=(bid-open)/StepStop; x--; x*=StepStop。
level_sell_stop=open+x;
如果(stop>=open+x)
loss=(open+x)*Point;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE) 。
}
如果(OrderType()==OP_SELL)
{
ask=MathRound(Ask/Point)。
open=MathRound(OrderOpenPrice()/Point)。
stop=MathRound(OrderStopLoss()/Point)。
x=(open-ask)/StepStop; x--; x*=StepStop。
level_buy_stop=open-x;
如果(stop>0 && stop<=open-x)
损失=(开-x)*点。
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE) 。
}
}
}
//----------------------------------------------------------------------------
空白的StepingPendings()。
{
在 "卖出"、"买入"、"开盘 "中。
双重价格,损失,利润。
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderSymbol()!=Symbol())
如果(OrderType()==OP_BUYSTOP)
{
如果(level_buy_stop==0)
open=MathRound(OrderOpenPrice()/Point)。
如果(open<=level_buy_stop)
price=level_buy_stop*Point;
损失=价格-步骤-停止*点。
profit=0; if (TakeProfit>0) profit=price+TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE)。
}
如果(OrderType()==OP_SELLSTOP)
{
如果(level_sell_stop==0)
open=MathRound(OrderOpenPrice()/Point)。
如果(open>=level_sell_stop)
价格=level_sell_stop*点。
损失=价格+StepStop*Point。
profit=0; if (TakeProfit>0) profit=price-TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE)。
}
}
}
//-------------------------------------------------------------------
空白的SetBuyStop()。
{
double lots=LotsCounting()。
double price=Bid+StepStop*Point;
double loss=price-StepStop*Point。
double profit=0; if (TakeProfit>0) profit=price+TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,lot,price,0,loss,profit,",0,0,CLR_NONE);
如果(ticket<1) Print("设置挂单失败,错误#",GetLastError()," ",(GetLastError())。
}

空白的SetSellStop()。
{
double lots=LotsCounting()。
double price=Ask-StepStop*Point;
double loss=price+StepStop*Point。
double profit=0; if (TakeProfit>0) profit=price-TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,lot,price,0,loss,profit,"",0,0,CLR_NONE);
如果(ticket<1) Print("设置挂单失败,错误#",GetLastError()," ",(GetLastError())。
}


int TotalBuy()
{
int count=0。
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderSymbol()!=Symbol())继续。
如果(OrderType()==OP_BUY)count++。
}
返回(计数)。
}

int TotalBuyStop()
{
int count=0。
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderSymbol()!=Symbol())继续。
如果(OrderType()==OP_BUYSTOP) count++;
}
返回(计数)。
}

总卖出量()
{
int count=0。
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderSymbol()!=Symbol())继续。
如果(OrderType()==OP_SELL) count++;
}
返回(计数)。
}

总卖出量(TotalSellStop)。
{
int count=0。
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
如果(OrderSymbol()!=Symbol())继续。
如果(OrderType()==OP_SELLSTOP) count++;
}
返回(计数)。
}

double LotsCounting()
{
双层地段=地段。
如果 (MoneyManagement)
{
double lotsize=MarketInfo(Symbol(),MODE_LOTSIZE)。
double freemargin=AccountFreeMargin()。
lots=0; 如果(lotsize>0) lots=NormalizeDouble((MarginPercent*freemargin/lotsize),1)。
}
如果(lot>10) lots=NormalizeDouble(lot,0);
如果(lot<0.01)lot=0.01。
返回(地段)。
}


// 结束

 
drknn:

他们没有回复的原因可能是写这样的指标很简单,而且很可能没有必要。
谢谢,但这又如何呢?或者告诉我,也许在终端设置 中,有可能沿着时间刻度的整个长度更清楚地显示小时标记?
 

乡亲们,救命啊!我无法计算出一个交易的最大成交量。

// Расчет максимального объема
   for (double m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>30; m = m + 0.1)
      {
       Max_lots   = m;
       double Ost = AccountFreeMarginCheck(Symbol(),OP_SELL,m);
      }

Max_lots永远是0!


而第二个问题,LEVEL是如何计算的?


 
root:
谢谢,但还是?或者告诉我,也许在终端设置中,有一个选项可以沿着时间刻度的整个长度更清楚地显示小时标记?
我明白,缺乏这个指标是阻止你在外汇中赚钱的最后一件事。肯定不是,但Urain 有一个类似的8行的。如果你不能,请问作者,他在论坛上。
附加的文件:
time_line.mq4  2 kb
 

简单来说,体积可以计算如下

/* вычитаем средства обозначенные на стопаут c учетом процента риска */
   curBalance = AccountFreeMargin() * (1 - AccountStopoutLevel() / 100.) * percent; // percent - от 0 до 100
/* множитель (1 или 10) зависит от четырех-пятизначности  */
   koeff = iif(DIGITS == 3 || DIGITS == 5, 10, 1);
/* расчет рабочего лота, нормализация */
   lot = NL(curBalance / (koeff * lossPoint * TICKVALUE + MARGINREQUIRED)); //lossPoint - количество пунктов потерь
   if (lot < MINLOT)    lot = 0;
   if (lot > MAXLOT)    lot = MAXLOT;

/* DIGITS,MINLOT,MAXLOT,TICKVALUE,MARGINREQUIRED получаем из Marketinfo() */


和水平 = AccountEquity() / AccountFreeMargin() * 100。

 
keekkenen:



和水平 = AccountEquity() / AccountFreeMargin() * 100。

是不正确的。这个公式并不奏效 水平
 
Noterday:
不正确。这个公式并不能算出水平

是的,错了,水平 = AccountEquity() /AccountMargin() * 100。

 
keekkenen:

是的,错了,水平 = AccountEquity() /AccountMargin() * 100。

谢谢 :)
 
你好。伙计们,请帮我解决一件事。我甚至没有听说过它--但如果有人拥有它呢?这个想法是将所有选定的对象从一个图表转移到另一个图表。也就是说,假设我需要将一个符号的所有时间的波形标记转移到一个窗口中。 由于计算的繁重性,很难重复标记切换时间段(在M1上计算30-50个趋势使终端脱颖而出--而这仅仅是一个图表的16-24小时左右)。也许有一个脚本可以复制图表上的对象(在这种情况下--趋势线),随后将整个趋势线阵列转移到另一个窗口?或者,也许有可能在一个窗口中合并几个模板?
 

很抱歉,今天是个好日子。

=====

摆动到一个毫无意义的高度......

从这里飞来的几个短语......

===========

安德烈-沃兹涅森斯基。

原因: