[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 292

 

こんにちは。

何が間違っているのか、ご教授ください。

条件付:Ask = 1.3000

PriceAsk = 1.3055 (Step=50、Srpead=3 の場合を含む)

boolBuyOrder=1

if (Ask-PriceAsk+Step-Spread<=0 && BuyOrder==0) なぜこの条件が成立するのでしょうか?
 
ed3sss:

if 文の直前に、条件に含まれるすべての変数の値をプリントアウトする

Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder);
想像していたのと違う変数値も出てくる可能性があります。
 
こんにちは、私のターミナルmt4で、ターミナル直下にある通貨ペアの一つをクリックすると、例えば(eurusd)このペアだけのターミナルウィンドウを開くために、私は小さなウィンドウを開いてから、右上に 拡大する必要がありますが、今まで一度も起こったことがありません。
 
GaryKa:

if 文の直前に、条件となるすべての変数の値をログに記録します。

Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder);
想像していたのと違う変数値も出てくる可能性があります。

チェックしてみてください、ありがとうございます)
 
tohoz :まず、少し理論的な話をします。


そして、結論

ホズ
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Функция, определения минимальной разрядности лота                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int LotDecimal()
{return (MathCeil (MathAbs (MathLog (bd_LOTSTEP) / MathLog (10))));}
その仕組みを理解したい。それが、私が尋ねた理由です。
下線部の 式は、bd_LOTSTEPの10進対数(10の底の対数)を返し、10の累乗でbd_LOTSTEPとする。
 

GaryKa:

if 文の直前に、条件となるすべての変数の値をログに記録します。

Print("Ask:",Ask," PriceAsk:",PriceAsk," Step:",Step," Srpead:",Srpead," BuyOrder:",BuyOrder);
確かに変数の中には、想像していたものと違うものもあるでしょう。


ed3ss です。


チェックしてみてください、ありがとうございます)

ありがとうございます。プログラムの論理エラーを発見し、現在はすべて動作しています。
 

こんにちは。

現在保有している注文の損益をチャートに表示するにはどうしたらよいですか?

Expert Advisor で ポジションをオープンしたかどうか(ターミナルのオン/オフ)を確認し、ターミナルを閉じる前に最後のロット量をピックアップすることは困難である。

ありがとうございます。

 
hoz:

ここで、ある機能に出会ったんです。

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|        Функция, определения минимальной разрядности лота                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int LotDecimal()
{return (MathCeil (MathAbs (MathLog (bd_LOTSTEP) / MathLog (10))));}
その仕組みを理解したい。だから聞いたんです。

間違っていたら、謝ります。MathLog(x) は ln(x) (自然対数)です。変換式は log_a(b)=ln(b)/ln(a) で、この場合 ln(x)/ln(10)=lg(x)(小数対数)となる。10進対数 lg(1...9) の整数部は 0、lg(10...99) は 1、 lg(100...999) は 2、 lg(1000...9999) は 3 となり、1より大きい数の対数はその数の桁数 小数点の、後は数えません)を1引いた数に等しくなることを示します。xが0から1なら、lg(0.1...0.9)の整数部は-1、lg(0.01...0.09)は-2、lg(0.001...0.009)は-3、つまりマイナスには注目しなければ0から1の数の小数対数は最初の有効数字以前の0の総数と等しいのです。MathCeilがどのように動作するのか知りませんが、数値の整数部を返す場合、この関数は、数値が1より大きい場合は小数点の前の 数値の桁数から1を引いた数、数値が0〜1の場合は有効数字1桁前の数値のゼロ数を返すことになっているようですね。この関数の最小値は,xが1〜9に等しい範囲です。10〜99と0.1〜0.9の場合は1,100〜999と0.01〜0.09の場合は2,...と返されます。そのアイデアは...
 

こんにちは、プログラムにバグがあります、もう頭を悩ませています、何が悪いのか指南してください。ただ、モディファイの条件がうまくいかないのはなぜなのか知りたい。たとえ条件が真でなくても、それは満たされるため、エラーや1、130を修正する場合。皆さん、ありがとうございました。

//--------------- TPに基づく命令の変更------------------------。
for (i = OrdersTotal() - 1; i >= 0; i--){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY){
if (OrderTakeProfit() == 0 || OrderTakeProfit() > OprTPB(TP) ){。
RefreshRates()。
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPB(TP),0,CLR_NONE)。
}
}
if ((OrderType() == OP_SELL)){
if(OrderTakeProfit() == 0 || OrderTakeProfit() < OprTPS(TP)){)
RefreshRates()。
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPS(TP),0,CLR_NONE)。
}
}
}
}
return(0)です。
}

double LastOpPrBuy(double va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (va == 0) va = OrderOpenPrice();
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY && OrderOpenPrice() <va) va = OrderOpenPrice()
}
を返す(va)。
}
//----------------------------------------------------------------------------------
double LastOpPrSell(double va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (va == 0) va = OrderOpenPrice();
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_SELL && OrderOpenPrice()>va) va = OrderOpenPrice()
}
を返す(va)。
}
//----------------------------------------------------------------------------------
double OprTPB(int TP)
{
int j=0;
double TPB=0;
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY)
{
TPB+=OrderOpenPrice()です。
j++;
}
}
if (j==0) {.
j++;
TPB=聞く。
}
TPB=(TPB/j)+TP*ポイント。
リターン(TPB)です。
}
//----------------------------------------------------------------------------------
double OprTPS(int TP)
{
int j=0;
double TPS=0;
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_SELL)
{
TPS+=OrderOpenPrice()です。
j++;
}
}
if (j==0) {.
j++;
TPS=入札。
}
TPS=(TPS/j)-TP*点。
リターン(TPS)です。
}
//----------------------------

 
borilunad:
私たちはみんな初心者です私たちは簡単なことも知らないのです。他にどこを探せばいいんだ!?少なくとも、私たちは、コードを挿入するように要求し、すぐにお金をポンピングするいくつかの人々が考える方法ではなく、知りたい


)))トレーダーのユーモアから

- 収益性の高いExpert Advisorはどこで手に入りますか?

- このスレッドの上の方を見てください。@MOZG@v4.12 というロボットが掲載されています。