[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 575

 

对亚美尼亚

这意味着这些功能在EA中没有被使用。写下如下内容

if (CountBuys()>2 && CountSells()>2) {\\действия}

 
请告诉我是否可以在EA运行时,如果资金超过原始存款,可以提取多余的资金,例如存入保险箱,并将其留在原始存款内,而不关闭任何未结头寸
 
link1:


维宁,非常感谢你的回答。但我真的不明白为什么ask1,ask2,ask3被分配了1,-1,-1的值。如果你不介意的话,能否请你用文字描述一下它是什么以及如何发生的,我是一个新手,我还不太明白所有的事情。我将非常感谢你)。


它们被分配的价值永远不会与价格相等。

 
yosuf:
在EA操作过程中,如果资金超过了初始存款,我是否可以提取多余的资金,例如到保险箱,并将其留在初始存款内,而不关闭未结头寸?

在MT5上,你可以看到。使用TesterWithdrawal()来模拟利润提取

这在MT4上是不可能的

 

你好!

我正在写一个指标,计算价格在一个刻度内上下移动的点数。
代码有什么问题,错误在哪里,请指教!

#property indicator_chart_window

extern int LimitBar = 10;
extern int cegl = 6;
extern string Shrift = "Arial Black";
extern bool delete = true;



double old_price, max_price, sum_pip_sell, sum_pip_bay, new_pip_bay, new_pip_sell, old_pip_bay, old_pip_sell;
datetime ctat_SB =0;

int init() {return(0);}

int deinit() {
if (delete == true) {
GetDellName(); 
}
ObjectsDeleteAll(0, OBJ_TREND);
return(0);
}

int start() {
double price;
string name_4,name_b;
int i=0;
int limit, pip; 
double delta; 
int counted_bars=IndicatorCounted(); 
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(ctat_SB==0) ctat_SB=Time[0];

if(limit>0) limit=0;

for(i=limit; i>=0; i--) {
if(old_price==0) old_price=Close[i];

if(iBarShift(NULL,0,ctat_SB)-iBarShift(NULL,0,Time[i])>=LimitBar) { ' счетчик баров для LimitBar

sum_pip_sell =0;
sum_pip_bay = 0; 
new_pip_bay = 0;
new_pip_sell = 0;
old_pip_bay = 0;
old_pip_sell = 0;

} 

price = Close[i];
if(price > max_price) max_price=price; 

delta = price - old_price; ' разница пунктов
pip = delta*10000; ' округляем до целого

//---- Каунт плюс 

if(delta>=0) { ' условие для ап пунктов

new_pip_bay = pip;
sum_pip_bay = old_pip_bay+new_pip_bay;
old_pip_bay = sum_pip_bay; 

}
//---- Каунт минус
if(delta<0) { ' условие для даун пунктов

new_pip_sell = MathAbs(pip);
sum_pip_sell = old_pip_sell+new_pip_sell;
old_pip_sell = sum_pip_sell;

} 
//----
old_price=price;

//---- размещаем счетчик на графике
name_4 = "TPM_ 4 "+TimeToStr(ctat_SB);
SetText(name_4+"sell",DoubleToStr(sum_pip_sell,0), ctat_SB+60*Period()*2, max_price+(Ask-Bid)*6, Blue,12); 
SetText(name_4+"bay",DoubleToStr(sum_pip_bay,0),ct at_SB-60*Period()*2, max_price+(Ask-Bid)*4.5, Red,12); 

} 

return(0);
}
void SetText(string name,string text,datetime t1, double p1, color c, int size) // --- отображение текста
{
if (ObjectFind(name)!=-1) ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,0,0,0,0,0); 
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1); 
ObjectSetText(name,text,cegl,Shrift,c);
}

//+------------------------------------------------------------+
void GetDellName (string name_n = "TPM_ ") // -- удаление меток с графика
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
} 
} 
//----

提前感谢!


 
yosuf:
请告诉我,在EA工作期间,如果资金超过初始存款,是否可以提取过多的资金,比如说,提取到保险箱中,并将其留在初始存款范围内,而不关闭未结头寸?

允许专家顾问 用与初始存款相等的存款进行交易

记住初始存款的规模,在每次开仓前检查其手数。如果交易量超过了允许的数值--减少交易量或释放资金。

 
Fox_RM:

你好!

我正在写一个指标,计算价格在一个刻度内上下移动的点数。
代码有什么问题,错误在哪里,请指教!

提前感谢!


为什么有这么多东西?

记住前一个刻度的价格。随着新刻度线的到来,计算价格差除以点,并再次记住该价格作为前一个刻度线的价格。

 
artmedia70:

为什么有这么多东西?

记住最后一个勾股的价格。随着新刻度线的到来,计算价格差除以点,并再次记住该价格作为前一个刻度线的价格。

在AP和DAUN点的条件中,代码完全是这么说的,但是当 价格图表上 显示指标 时,标记输出的上升点数是0,下降点数是0。有什么问题我不明白!?
 

各位程序员!

MQL4操作的优先级(和关联性)是否与C对应?

我不想滥用括号,但 文档中没有提到操作的优先级

这不是一个空洞的问题。MQL4被定位为一种类似C语言的语言。这里的关键词是DEFINITELY。如果说逻辑表达式的完整计算这种事情只是偏离了C语言的标准,那么在这个区块之外定义的变量的可见性就是编程规范中的一个严重错误。

谁知道MQL4开发者的想象力能走多远呢:)。

 
artmedia70:

只允许专家顾问用与初始存款相等的存款进行交易。

记住初始存款的规模,在每次开仓前检查其手数。如果交易量超过了允许的规模 - 减少手数或释放资金。

我的意思是这样的:当我用1万美分的存款在micro-real上交易时,我可以在EA运行期间随时手动提取我的多余资金,还是我必须停止EA,关闭所有未结头寸,然后才提取多余资金?我以固定手数0.1进行交易。我怎样才能真正落实你的建议。"允许专家顾问 用与初始存款相等的存款进行交易
原因: