[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 26

 
Code:


返信ありがとうございます!質問にお答えします。

その特性は、まさにインジケーターの考えそのものです。そして同時に、MQLの練習にもなります。ある課題を考え、それをある言語で実装することは、それほど難しいことではないと直感的に理解しました。座ってやってみる。

つまり、2つの一方向のボリュームのある固定された理論上のレベルと実際のレベルを比較するというのが特徴の本質なんです。つまり、2つのボリュームの合計と実際の「開閉」間隔の比率が、指定した理論値よりも高ければ、計算した理論値と実際の結果の差という形で、実際の2番目のボリュームに「ボーナス」を追加するのである。もし、実際のレベルが理論値より低ければ、同じ差を2本目のバーのボリュームから引きます。わかりやすく説明できるかな?

念のため申し上げておきますが、この特性を明らかにする際、おそらく急いでいたのか、括弧の付け方を間違えていますね。

それに、あなたが私と同等だと考えている文字列は、ゼロで割ることにつながるようです。今すぐ確認します。

明確である。しかし、2(2つのボリュームの間の平均)と変数UP12で計算されるものがどのように関連しているかは明らかではありません。やはり、両者は次元が違う。分母に時代と価格。何しろ、学校の授業で「メートルとキログラムはどうやっても足さない」と教わったのですから。:))))


そうです、間違っているのです!:))))数式が分数であることと、すべてを1行にまとめてしまうこととは別物であり、どのように理解すればいいのか......。それは不注意であって、急いではいない......。

また、コードの最適化も間違えていました。そこでも数学的なミスがあった。括弧をつけるのを忘れていました。

   double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);
 
Roman.:

あなたの指摘は、まったく正しいものではありません...。を間違った取引基準にするのは、SOHAS-TEAMについての質問です...。:-Р

問題はこれだった。

ideasforlife:

条件1を 満たした場合
-売りの注文を確認する
-もしあれば-閉じる
-口座に資金があるかどうかの確認
-買い注文を出す

条件2を 満たした場合も同様です。
-買い注文があるかどうか確認する。
-もしあれば、それらを閉じる
買いの注文があるかどうかを確認し、あれば決済する。
-売り注文を出す
+ エラー解析(メインではないが、可能性はある)

HOSTAGEとどんな関係があるのですか?:))))

必要なチェックはすでに行われ、トレードシグナルが形成されているか、されていないか。

 
demlin:

みなさん、こんにちは。

このブランチのエキスパート達(特にRoman)の貴重な助力のおかげで、簡単なExpert Advisorを作ることに成功し、テスターで+表示されました。質問:実際の取引に使用できるかどうか、どのように判断するのですか?何か基準はあるのでしょうか?


はい、基準は何ですか、あなたは専門家のさらなる仕事、その後義務的なデモ、その後マイクロリアルに適切な組織の 意思決定の採用と可能なエラーの知的処理の形で、(本物のためにシャープ - 断線や追加の行への切り替えの制御) "基本 "に動作します...。結果に満足したら、"GO CRAZY" ... :-))そ もそも、チュートリアルから EAのエラー処理を分解し、注文する前に、取引操作の要件と制限の 必要なチェックを行うことを忘れないでください、検索で何かを:エラー処理サイト:mql4.com、実際のサイト:mql4.com用EAを準備、私(一部:-R)は、このように発見を行う専門家がいる。

// После старта
if (!IsTradeAllowed() || IsTradeContextBusy() || !IsConnected()) return; // если торговля невозможна, то выходим

使用するための注文選択を確認する

                if (ticket>0)                                               // Если позиция открылась
                    {
                       while(OrderSelect(ticket,SELECT_BY_TICKET)==false) Sleep(1000);     // Если ордер выбран
                         double OpenPrice=OrderOpenPrice();
                         ...  
                           

はじめに

color ColorBuy = Blue, ColorSell = Red;
bool UseSound = true;
string alert.wav;
color clr, ClrClose = Gray;
int Level_new; 
double price;
bool result, Buy_signal=false, Sell_signal=false;
int  orderIndex;
bool IsExpertFailed = false;
bool IsExpertStopped = false;
double lots;                       // вспомогательная переменная для расчета нового размера лота 
double Lots_New;                   // Количество лотов для новых ордеров
int ticket;                        // Номер ордера
double orderLots;                  // Lots   
double orderProfit;                // Profit
double Price;                      // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double  TP;                        // Значение TakeProfit ордера
static datetime prevtime = 0;       // по ценам открытия

int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
      
    if (!IsTesting())
       {
         if (IsExpertEnabled())  Comment("Советник запустится следующим тиком");       
           else  Comment("Отжата кнопка \"Разрешить запуск советников\"");
      
       }
    ...
   
   return (0);
}

以上、IMHOの手始めとして、まだまだ続きます......。

いずれにせよ、「マネージャー」のコントロールが必要です・・・。 :-R 失われた預金に耐えられないほど痛まない ように...。

 

MaxZ:


問題はこれだった。

STOCHASTAGEとどう関係があるのですか?:))))

必要なチェックがすべて行われ、売買シグナルが形成されたかどうか。


直接の質問がありました。

"これはすべて現在の通貨ペアの話です。
int start()
{
double M_0, M_1; // 0と1バーでのMAIN値
S_0, S_1; // 0バーと1バーの信号の値
//--------------------------------------------------------------------
// テクニカル表示用の関数を呼び出す.
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0);// 0バー
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1本のバー
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 bar
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1バー
//--------------------------------------------------------------------

if( M_1 < S_1 && M_0 >= S_0 ) // 条件1: 下から緑が赤を横切る。

if( M_1 > S_1 && M_0 <= S_0 ) // 条件2:緑が上から赤と交差する。

//--------------------------------------------------------------------
return; //start()から退出
}"

基本的に、何でも、IMHOは、著者が参考にした、彼はそれを理解するだろう...。:-Р

 

Roman.:


冒頭で

...
int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
...

IsExpertStopped変数の目的は何ですか?そして、ログに刻々と「Expert Advisorは取引を許可 されなければならない」というメッセージが表示されることが判明しました...。

 
MaxZ:

IsExpertStopped変数の目的は何ですか?そして、ログに刻々と「Expert Advisorは取引を許可する必要があります」というメッセージが表示されることが判明しました...。

これが私の仕事です。


F1プレスオン
IsTradeAllowed()

きっと見つかるはず...。:-Р

具体的には "

EAに取引が許可され、スレッドが空いていれば」取引、そうでなければIsExpertStopped = EAが停止し、取引の許可を 待っている...ということです。

 
Roman.:

F1プレスオン

見てくれ:-Р

すなわち "

EAに取引が許可されていて、取引実行用のスレッドが空いている」場合は取引、そうでない場合は IsExpertStopped = EAが停止していて、取引の許可を待っている...となります。

了解...今日はすっかり気が抜けてしまいました。init()を見てstart()を思い浮かべる!:)))))

 
MaxZ:

明確である。しかし、2(2つのボリュームの間の平均)と変数UP12で計算されるものがどのように関連しているかは明らかではありません。やはり、両者は次元が違う。分母に時代と価格。何しろ、学校の授業で「メートルとキログラムはどうやっても足さない」と教わったのですから。:))))


そうだ、それはおかしい!」。:))))数式が分数であることと、すべてを1行にまとめてしまうこととは別物であり、どのように...と理解することはできません。それは不注意であって、急いではいない...。

また、コードの最適化も間違えていました。そこでもまた、数学の間違いである。括弧を使うのを忘れていました。


MaxZさん、早く、ああ早く:))結論あり!

キロメートルとキログラムを足さない。実例を紹介します。本日のユーロドル、5分足です。ただ、上昇ローソク足 が2本並んでいるチャートをつついただけです。

vback1=703、dVolume=696です。(vback1+dVolume)/2=699,5.

同じローソク足で (Close[i]-Open[i+1] )*1000=(1.42911-1.42549)*1000=3.62

(vback1+dVolume)/3.62=386.5

合計:696+699.5-386.5=1009。どちらが描くべきものなのか。そして、1009が具体的にどのようなものかは、この場所のインジケータが示しています。といった具合に。

もうひとつは、私自身がこちらの例で計算したところ、コードの式によれば、前の投稿で説明したようなことは起こらないことがわかりました。実は、それは別のイデオロギー、つまり自己規制のようなものであることがわかった。vrealUP12パラメータのマイナス値がdVolume+vteor12の合計を超えない限り、最後のボリュームに追加されます。または、ExtVolumesBuffer[i]の計算のために追加のパラメータを入力する必要があります。

そして、ラインでは

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

に戻しただけです。

double vrealUP12=(dVolume+vback1)/UP12;

を長くしないようにする。

 
Code:


MaxZさん、早く、ああ早く :))) 結論を!

キロメートルとキログラムを足したわけではありません。実例を紹介します。本日のユーロドル、5分足です。ただ、上昇ローソク足が2本並んでいるチャートをつついただけです。

くそ...足し算をするんですね、しかも、どうやって!?:))

変数vteor12は、Volumes(つまりOur meters)のディメンションを持っています。

 vteor12=(dVolume+vback1)/2;

変数UP12は、ある通貨ペアのPipsの 次元を持つ。

UP12=(Close[i]-Open[i+1])*1000

変数vrealUP12は、VolumeとPointの比の次元です(それは私たちのキログラムです)。

vrealUP12=(dVolume+vback1)/UP12;

そして、メートルとキログラムの合計である自分の特性を計算することになるのです。;D

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;


2が理論上2本あたりのPriceが通過すべき20ポイントでない限りは!:))でも、それはもうナンセンスな話ですよね...。


コード


そして、ラインでは

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

に戻しました。

double vrealUP12=(dVolume+vback1)/UP12;

長くならないように

長尺化が有効な場合もあります。コンピュータのリソースを節約することができます:)))なぜこのような余分な変数が必要なのでしょうか?

 
MaxZ:

おいおい...そうなのか!?:))

変数vteor12は、Volumes(つまりOur meters)のディメンションを持っています。

変数UP12はPriceの次元を持つ。

変数vrealUP12は、VolumesとPrice(これはOur kilograms)でディメンションされています。

そして、最後はメートルとキログラムの合計である自分の特性を計算する、そういうことなのです;D


よし、別の見方もしてみよう。

vteor12は、(dVolume+vback1)/k1(係数1)と書くことができる。

vrealUP12は、(dVolume+vback1)/k2(係数2)と書くことができる。

指標となるイデオロギーを説明しようとしたとき、それはいくつかの理論的なレベルと実際のレベルの比較で構成されています。このレベルを得るために、同じ値(dVolume+vback1)をある理論値(k1)と実際の値(k2)と比較(つまり分割)します。k1物事を正式名称で表現するために、私が作っていることは明らかです。あるいは、思い込みとでもいいましょうか。さて、これは何かと比較しなければならない。この場合、グラフそのものほど客観的で真実味のあるものはない。そこで私は、オープニングとクロージングの差を、ある期間の底値と捉えています。そして、ここでの唯一の仕事は、それを同じ桁にすることであり、そのために1000倍されるのである。

電卓で隣り合うローソク足のバリエーションをいくつか計算してみると、この非常にシンプルな計算式による結果の多様さに驚くかもしれません。

そして、学校の論理という点では、あなたの言うとおりです。Volume+Volume/Priceを追加しています、学校ではできないですよね。:))