MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1165

 
Igor Makanu:

説明できるかどうか疑問ですが、もしあなたがそれを求めているのなら

様ですというクラス型の変数があるとします。

は、CProgramクラスです。

コードのどこかで、次のように記述してください。

を呼び出す必要があります。

あなたはGODです!!!あなたを理解し、すべてがうまくいった)
 

その意味を教えてください。

OrderSend'の戻り値をチェックする必要がある TestLibrary.mq4 64 6

 
MakarFX:

その意味を教えてください。

OrderSend'の戻り値をチェックする必要がある TestLibrary.mq4 64 6

OrderSendの 結果を確認する必要があります。:-)

 
Maxim Kuznetsov:

OrderSend の結果を確認する必要があります。:-)

I know English))

確認方法は?

 
MakarFX:

I know English))

どのように確認するのですか?

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

 
Maxim Kuznetsov:

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

ありがとうございました。
 
//+------------------------------------------------------------------+
//| TEST_V01.mq4
//|Copyright 2019, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#プロパティの厳密さ
#define MAGICMA 20131111
//--- 入力
入力 int Risk = 1;
入力 int Max_Risk = 8;
入力 int SL = 100;
//+------------------------------------------------------------------+
//| 専門家による初期化機能
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| エキスパートティック機能
//+------------------------------------------------------------------+
void OnTick()
{
if(OrdersTotal()==0)
if(OrderSend(Symbol(), OP_BUY, Lot_Calculate(Symbol(), Risk, Max_Risk, SL), Ask, 30, NormalizeDouble(Ask - SL*Point, Digits), NormalizeDouble(Ask + SL*Point, Digits),", MAGICMA,0,Blue)==-1)
Print("エラー: ",GetLastError()).Print("エラー: ",GetLastError())。
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------
// ロット計算
//-----------------------------------------------------------------
double Lot_Calculate(string _symbol, int _risk, int _m_risk, int _pips)
{
_m_risk = Max_Risk。
_pips +=20;
double minlot = MarketInfo(_symbol,MODE_MINLOT)。
double maxlot = MarketInfo(_symbol,MODE_MAXLOT)。
double steplot = MarketInfo(_symbol,MODE_LOTSTEP)。
double money_risk = NormalizeDouble(AccountEquity()*_risk/100,2);
double calk_pip_cost = NormalizeDouble(money_risk/_pips,2); // 1ポイントあたりのコスト
double lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE); // 1標準ロットの量による価格変動時の1ピップ分のコスト
// while(!MathIsValidNumber(lot_pip_cost || lot_pip_cost ==0))
//{
// lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE);
//}
double lot = calk_pip_cost/lot_pip_cost;
//-------------------------------------------------------------
double money_m_risk = NormalizeDouble(AccountEquity()*2*_risk/100,2); // リスクも2倍にしてみました。
double _m_calk_pip_cost = NormalizeDouble(money_m_risk/_pips,2); // 倍率後の1ポイント値の計算
double lot_m = _m_calk_pip_cost/lot_pip_cost;// 2倍後のロットの計算
if(lot <= minlot) lot = minlot;
else if(lot >= maxlot) lot = maxlot;
else if(lot > minlot && lot < maxlot)
{
int k = int((lot - minlot)/steplot);
lot = NormalizeDouble(minlot+k*steplot,2)。
}
return(lot)です。
// ------------------------------------------------------
{
if(lot_m <= minlot) lot_m = minlot; // この行から、自分自身
else if(lot_m >= maxlot) lot_m = maxlot;
else if(lot_m > minlot && lot_m < maxlot)
{
int k = int((lot - minlot)/steplot);
lot_m = NormalizeDouble(minlot+k*steplot,2);
}
return(lot_m);
if(OrderProfit()>0) lot--;
if(OrderProfit()<0) lot_m++;
}
if(_m_risk == Max_Risk) lot_m = lot; // ここでは何も理解できないはずです。
return(0)です。

}


2日前から悩んでいます。リスクを再計算する関数が書けない。

TPによって取引が終了した場合、リスクは変わりません。

SLでリスクがクローズされると、リスクは2倍となり、エキスパートアドバイザーの入力変数で規定された値、例えばMax_Risk = 8まで増加します。

となり、初期リスクRisk = 1にリセットされる。

さて、2倍になった後、TRで取引を終了した場合、再び最初のRisk=1に戻ります。

手伝ってくれる?

よろしくお願いします。

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. и снова dll и маркет День добрый! Правило №1 dll на...
 
全然違いますね。
 

こんにちは。

プロフェッショナルの方、よろしくお願いします。一つの問題が解決できない。以下はそのコードです。


datetime some_time=TimeCurrent();

int start()

{

ダブルサム

ダブルラズン

int k=iBarShift(",PERIOD_M5,some_time)とする。

double VAL0=MathAbs(iATR(NULL,0,1,1))/点。

double VAL1=MathAbs(iATR(NULL,0,1,0))/点。

if (VAL1>VAL0)

{

razn =MathAbs((iATR(NULL,0,1,0))-(iATR(NULL,0,1,1))/Point;

for(int i = k; i >= 1; i--)

{

sum=summ+razn。

}

Comment("使用期間:",k,"˶‾᷄ -̫ ‾᷅˵")

"ATR前:"+VAL0+"Ⅻ"です。

"ATR電流:",VAL1," \n",

"ATRの違い:",razn, "razn",

"ATR差:",summ,"Ⅻ");

}

return(0)です。

}

エキスパートアドバイザーは、現在のATR値と前回のATR値との差をカウントします。ただし、ATRが増加した場合のみ。

この差は変数 "razn "に表示される。新しいバーが来るたびに、変数「razn」の値を変数「sum」に加算/累積する必要があります。

現在のバージョンでは、"sum "の累積が正しく動作しません。

ループのことだと思われます。


Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
 
フォーラムメンバーの皆様、こんにちは。情報が見つからない。安値と高値からあるポイントレベルまでのライン(水平でない)を自動的に引くツールはないでしょうか?つまり、安値または高値を定義し、高値または安値からの距離をpipsで固定したローソク足に線を引くのでしょうか。フラクタルのインジケーターが 安値・高値判定をしてくれることがわかりました。しかし、価格が何ポイント変化したかに線を引くことができるようなアドオンを見つけることができませんでした。