English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
preview
固定プライスアクションストップロスまたは固定RSI(スマートストップロス)

固定プライスアクションストップロスまたは固定RSI(スマートストップロス)

MetaTrader 5 | 8 2月 2022, 12:41
652 0
vwegba
vwegba

はじめに

私をこの研究に導いたのは、取引における聖杯の探求です。ストップロスは、取引の資金管理において最も重要なツールです。資金管理は、トレーダーが市場で収益を得て、長期的に一貫性を保つことができるさまざまな方法の1つです。先に述べたように、資金管理はストップロスとリスクと報酬の比率に強く関連しています。リスク:報酬の比率が1:1.5Rでの勝率は、他の比率と比較して高い傾向がありますが、1:>1.9Rではほとんどの場合、より収益性が高く、トレーダーは長期間にわたって一貫した利益を上げる傾向があります(聖杯)。この「聖杯」取引ストラテジーには欠点があります。理想的な状況では、1:>1.9Rの取引では、10回の取引(各1ピップ)のうち、6回の取引(6ピップ)には損失が伴い、4回の取引(8ピップ)では利益があります。つまり、2ピップの利益があります。実際の応用では、これがすべて当てはまるとは限りません。これに寄与する1つの主要な要因は、「ストップロスハント」という用語で知られています。ストップロスハントとは、取引が流動性のストップロスに達した後に予測した方向に移動することです。ストップロスハントは、取引と資金管理の主要な問題で、トレーダー(主に初心者トレーダー)に心理的な影響を及ぼします。 

ストップロスハント

図1.1. ストップロスハント

ストップロスハントは、主にプライスアクションまたはローソク足チャートの固定またはトレーリングのストップロスに関連付けられています。プライスアクションチャートにストップロスがなければ、ストップロスハントはありません。ただし、0のストップロスは取引口座を爆破する確率(これは1に等しいです)に等しいです。


RSIストップロス

RSIオシレーターは、100から0の制限ウィンドウにプロットされたプライスアクション折れ線グラフのレプリカです。

thRsi


図1.2 RSIと折れ線グラフ

RSIと折れ線グラフが非常に似ている場合は、RSIをスマートストップロスとして使用すると、ストップロスハントのリスクが軽減される可能性があります。

狙い

ここでの私の狙いは、RSIストップロスの使用でストップロスハントを減らすことができるかどうか、とりわけ長期的に利益をもたらすことができるかどうかを検証することです。

目的

2つの同じストラテジーが比較されます。1つではプライスアクションチャートにストップロスが設定されており、もう1つではRSI指標にストップロスが設定されています。




ストラテジーとコード

従来のSL - プライスアクションチャート

プライスアクションでの固定SL - 最初のEAの場合。以下はストラテジーの要件です。

パラメータ

説明

使用される指標

MACD(12,26,9)

使用される指標

移動平均(200)

使用される指標

移動平均(50)

使用される指標

ATR(5)

時間枠

1分

買いエントリ

移動平均(50)が移動平均(200)を上回り、MACDラインとシグナルラインの両方がゼロ未満のときにMACDラインがシグナルラインよりも大きい場合

売リエントリ

移動平均(50)が移動平均(200)を下回り、MACDラインとシグナルラインの両方がゼロを上回っているときにMACDラインがシグナルラインよりも小さい場合

エグジット

TPとSL(1:2R)

買い条件のSLは、エントリ後の20本のローソク足の最低値からATR(5)値を減算したもの

売り条件のSLは、エントリ後の20本のローソク足の最高値にATR(5)の値を加算したもの

 


グラフ表示を以下に示します。

買いエントリ - 従来のSL


図2.1 買いエントリ

売りエントリ - 従来のSL


図2.2 売りエントリ

コード

コードの最初の部分では、主に変数を宣言してデータを入力します。すべての指標ハンドラ変数はここで宣言されました。

#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
CTrade trade;
int MATrend;
int MADirection;
int MACD;
int ATR;
input int afi;// ----------RiskAmount------------
input double risk = 0.02; //% Amount to risk
input int atrValue = 20; // ATR VAlue
input int ai;// ----------Moving Average inputs------------
input int movAvgTrend = 200;// Moving Average Trend
input int movAvgDirection = 50;//moving Average for trend Direction;
input int i;// -----------MACD inputs-----------------------
input int fast = 12;// Macd Fast
input int slow = 26; //Macd Slow
input int signal = 9; //Signal Line

他の変数も宣言されました。

double pipValue  = 0.0;// 

double Balance; // For the Current Balance

変数は、init()関数の各ハンドラに割り当てられました。

int OnInit()
  {
//---
      //Moving Averages Indicators''
      MATrend = iMA(_Symbol,_Period,movAvgTrend,0,MODE_SMA,PRICE_CLOSE); //Moving Average 200
      MADirection = iMA(_Symbol,_Period,movAvgDirection,0,MODE_EMA,PRICE_CLOSE); //Moving Average 50
      //MACD
      MACD = iMACD(_Symbol,_Period,fast,slow,signal,PRICE_CLOSE);//MACD 
      //ATR
      ATR = iATR(_Symbol,_Period,atrValue);
      //---
      point=_Point;
      double Digits=_Digits;
      
      if((_Digits==3) || (_Digits==5))
      {
         point*=10;
      }
      return(INIT_SUCCEEDED);
  }


ストラテジーの実行方法に関するコードを以下に示します。

void Strategy() {
   MqlRates priceAction[];
   ArraySetAsSeries(priceAction,true);
   int priceData = CopyRates(_Symbol,_Period,0,200,priceAction); 
   
   double maTrend[]; ArraySetAsSeries(maTrend,true);
   CopyBuffer(MATrend,0,0,200,maTrend); //200 MA
     
   double madirection[]; ArraySetAsSeries(madirection,true);
   CopyBuffer(MADirection,0,0,200,madirection);  //50 MA
   
   double macd[]; ArraySetAsSeries(macd,true);
   CopyBuffer(MACD,0,0,200,macd);  //MACD
   
   double macds[]; ArraySetAsSeries(macds,true);
   CopyBuffer(MACD,1,0,200,macds);  //MACD_Signal Line   
      
   double Bid  = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);  
   
   
   if (madirection[1]>maTrend[1]) {
      //Buy ; Uptrend
     
     
      
      bool macd_bZero = macds[1]<0&&macd[1]<0; //MacD Signal Line is less than Zero
      bool macd_cross = macd[1]>macds[1];// Macd Crosses the signal line
      
      if (macd_bZero && macd_cross) {
         buyTrade = true;
      }
      
      
   } else if (madirection[1]<maTrend[1]) {
      //Sell; DownTrend
      
     
      bool macd_bZero = macds[1]>0&&macd[1]>0;; //MacD Signal Line is less than Zero
      bool macd_cross = macd[1]<macds[1];// Macd Crosses the signal line
      
      if (macd_bZero && macd_cross) {
         sellTrade = true;
      }      
      
    }  
    
   if (buyTrade && sellTrade) {
      buyTrade = false;
      sellTrade = false;
   return;
   }
      
      
   if (buyTrade) {
      buyTrade = false;
      sellTrade = false;
      
      Buy(Ask);
   } else if (sellTrade) {
      buyTrade = false;
      sellTrade = false;
      
      Sell(Bid);   
   }
   
}

エントリ(売買)

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   trade.Buy(theLotsize,_Symbol,Ask,(stoplossforBuy(20)-atr[1]),Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL); //Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle
    

}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   trade.Sell(theLotsize,_Symbol,Bid,(stoplossforSell(20)+atr[1]),Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL); //Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle

}

上記のコードから、stoplossforSell(int num)とstoplossforBuy(int num)の2つのメソッドを呼び出しました。これらの2つのメソッドは、取引エントリがトリガーされた後、割り当てられた番号の最高と最低のローソク足をそれぞれ識別するために特別に意図されています。たとえば、stoplossforSell(20)は、エントリ前の20本のローソク足の中で最も高いローソク足を返します。

double stoplossforBuy(int numcandle) {
         int LowestCandle;
         
         //Create array for candle lows
         double low[];
         
         //Sort Candle from current downward
         ArraySetAsSeries(low,true);
         
         //Copy all lows for 100 candle
         CopyLow(_Symbol,_Period,0,numcandle,low);
         
         //Calculate the lowest candle
         LowestCandle = ArrayMinimum(low,0,numcandle);
         
         //Create array of price
         MqlRates PriceInfo[];
         
         ArraySetAsSeries(PriceInfo,true);
         
         //Copy price data to array
         
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInfo);
      
         return PriceInfo[LowestCandle].low;
                  
      
         

}
double stoplossforSell(int numcandle) {
         int HighestCandle;
         double High[];
       
       //Sort array downward from current candle
         ArraySetAsSeries(High,true);
       
       //Fill array with data for 100 candle
         CopyHigh(_Symbol,_Period,0,numcandle,High);
         
         //calculate highest candle
         HighestCandle = ArrayMaximum(High,0,numcandle);
         
         //Create array for price
         MqlRates PriceInformation[];
         ArraySetAsSeries(PriceInformation,true);
         
         
         //Copy price data to array
         int Data = CopyRates(Symbol(),Period(),0,Bars(Symbol(),Period()),PriceInformation);
         
         return PriceInformation[HighestCandle].high;
          
 
 }

このEAは、既存の取引があるかどうかを確認することにより、一度に1つずつ取引に入ります。既存の取引がない場合は、ストラテジーメソッドが呼び出されます。

void OnTick()
  {
//---
   pipValue  = ((((SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE))*point)/(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE))));

   Balance = AccountInfoDouble(ACCOUNT_BALANCE);
   
   if (PositionsTotal()==0) {
      Strategy();
   }
  }

RSI指標でのRSI SL


RS指標での固定SL - 2番目のEAの場合。以下はストラテジーの要件です。

パラメータ

説明

使用される指標

MACD(12,26,9)

使用される指標

移動平均(200)

使用される指標

移動平均(50)

使用される指標

ATR(5)

時間枠

1分

買いエントリ

移動平均(50)が移動平均(200)を上回り、MACDラインとシグナルラインの両方がゼロ未満のときにMACDラインがシグナルラインよりも大きい場合

売リエントリ

移動平均(50)が移動平均(200)を下回り、MACDラインとシグナルラインの両方がゼロを上回っているときにMACDラインがシグナルラインよりも小さい場合

エグジット

TP

買い条件のSLは、エントリ後の20のRSI値の最低値

売り条件のSLは、エントリ後の20のRSI値の最高値

 

RSIが最高または最低のRSIを超えると、取引は決済されます。

 


視覚化を容易にするためにRSIストップロスに線を引きます。

買いエントリSL(RSI SL)


図2.3 SLでの買い取引(RSI)

現在のRSI値がRSIウィンドウのSLラインよりも小さい場合、取引は決済されます。

売りエントリSL(RSI SL)


図2.4 SLでの売り取引(RSI)

現在のRSI値がRSIウィンドウのSLラインよりも大きい場合、取引は終了します。

コード

コードの最初の部分では、主に変数を宣言してデータを入力します。以下に示すいくつかの追加を含む最初のインジケーターと同様です<分節0799>

int RSI;
input int rsi = 5; // RSI VAlue
double lowestrsiValue = 100;
double highestrsiValue = 0.0;

同様に、onint()メソッドも似ていますが、以下に示すようにいくつかの追加があります。

int OnInit()
  {
              //RSI
      RSI = iRSI(_Symbol,_Period,rsi,PRICE_CLOSE);
}


ストラテジーのコードは上記のものと同じです。ただし、RSIレベルをSLとして使用するため、買いと売りの両方のエントリにはSLはありません。以下はエントリのコードです

void Buy(double Ask) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)

   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Ask-((stoplossforBuy(20)-atr[1])))*100)*pipValue),2); // This Calculate the lotsize using the % to risk
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,lowestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window
   trade.Buy(theLotsize,_Symbol,Ask,0,Ask+(2*MathAbs(Ask-((stoplossforBuy(20)-atr[1])))),NULL);//Buy Entry with zero stoploss && take profit is twice the distance between the entry and the lowest candle
    Print("SL",lowestRSI(10));
}
void Sell(double Bid) {
   double atr[]; ArraySetAsSeries(atr,true); //This array is use to store all ATR value to the last closed bar
   CopyBuffer(ATR,0,0,200,atr); // This method copy the buffer value of the ATR indicator into the array (200 buffered data)
   
   theLotsize =  NormalizeDouble((Balance*risk)/((MathAbs(Bid-((stoplossforSell(20)+atr[1])))*100)*pipValue),2);  // This Calculate the lotsize using the % to risk
   
   ObjectCreate(0,"sl",OBJ_HLINE,3,0,highestRSI(10)); // Since our stoploss is zero we assign a smart stoploss on the rsi by drawing a line on the rsi window
   trade.Sell(theLotsize,_Symbol,Bid,0,Bid-(2*MathAbs(((stoplossforSell(20)+atr[1]))-Bid)),NULL);//Sell Entry with zero stoploss && take profit is twice the distance between the entry and the highest candle
   Print("SL",highestRSI(10));
}


コードの最後の部分で上記のEAとは異なるのは、RSIの最小値と最大値を取得するメソッドです。これは上記のエントリメソッドから呼び出され、データを使用してRSIの最低/高点に線を引きます。

注: ポジションがない場合、ストラテジーメソッドでは描画された線が削除されます。

 double lowestRSI(int count) {     
      double thersi[]; ArraySetAsSeries(thersi,true);
      CopyBuffer(RSI,0,0,200,thersi);
      
      for (int i = 0; i<count;i++) {
      
         if (thersi[i]<lowestrsiValue) {
            lowestrsiValue = thersi[i];
         }
      }
   return lowestrsiValue;
}
//This method get the Highest RSI afer ENtry to set the smart Stoploss
double highestRSI(int count) {

      
      double thersi[]; ArraySetAsSeries(thersi,true);
      CopyBuffer(RSI,0,0,200,thersi);
      
      for (int i = 0; i<count;i++) {
      
         if (thersi[i]>highestrsiValue) {
            highestrsiValue = thersi[i];
         }
      }
   return highestrsiValue;
}

####

EAが設定および準拠されたので、必要な結果について両方のEAのテストに進みましょう。


テストと結果

ストップロスハントテスト

このセクションでは、シミュレーションから得られたテストと結果を示します。実行される最初のテストでは、RSI SL EAが取引中のストップロスハントの問題を減らすことができるかどうかを判断します。CLASSIC SL EAと比較されます。

テストはM1時間枠で行われます。

RSI SL EAエントリデータ

エキスパート: MACD_Smart_Stoploss
銘柄: Volatility 10 Index
期間: M1 (2021.07.01 - 2021.07.15)
入力: afi=0
risk=0.05
atrValue=20
rsi=14
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9
証券会社: Deriv Limited
通貨: USD
初期資本: 500.00
レバレッジ: 1:500



CLASSIC SL EAエントリデータ

エキスパート: MACD_Cross_Stoploss
銘柄: Volatility 10 Index
期間: M1 (2021.07.01 - 2021.07.15)
入力: afi=0
risk=0.05
atrValue=5
ai=0
movAvgTrend=200
movAvgDirection=50
i=0
fast=12
slow=26
signal=9

risk reward=1:2
証券会社: Deriv Limited
通貨: USD
初期資本: 500.00
レバレッジ: 1:50


結果

両方のEAによって実行された取引のグラフィック表現が下に表示されています。それぞれから合計3つの取引サンプルが取得されました。

RSI SL 1


図3.1 RSI SL EAからのサンプル1

プライスアクションSL


図3.1a CLASSIC SL EAからのサンプル1

RSI SL 2

図3.2 RSI SL EAからのサンプル2

プライスアクションSL

図3.2a CLASSIC SL EAからのサンプル2

RSI SL 3
図3.3 RSI SL EAからのサンプル3

プライスアクションSL

図3.3a CLASSIC SL EAからのサンプル3


上記の比較から、RSI SL EAは、プライスアクションチャートに設定された従来のSLと比較して、市場でのハントを回避するのに優れた役割を果たしたことがわかります。


収益性テスト

今こそが「これは有益か」という大きな質問をするときです。RSI SL EAはストップロスハントを回避するのに優れているので、従来のストップロス方式と比較してストップロスがほとんどトリガーされないため、収益性が高く、勝率も高くなければなりません。論理的には、これは真実であるかもしれませんが、この理論を証明するには、テストを実施する必要があります。

上記のテストの同様のデータが両方のテストに使用されます。100以上の取引の両方のEAのバックテストは、M1時間枠で実行されます。結果は以下のとおりです。


RSI SL EAの結果

結果
履歴の質: 100%
バー: 20160 ティック: 603385 銘柄: 1
総収益: 327.71 残高ドローダウン絶対値: 288.96 初期投資からの資本ドローダウン: 367.85
粗利: 3 525.74 残高ドローダウン最大値: 483.90 (69.63%) 資本最大ドローダウン: 523.24 (71.95%)
総損失: -3 198.03 残高ドローダウン相対値: 69.63% (483.90) 資本ドローダウン相対値: 73.65% (369.45)
利益率: 1.10 予想損益: 1.76 証拠金レベル: 317.21%
RF: 0.63 シャープレシオ: 0.08 Zスコア: 1.68 (90.70%)
AHPR: 1.0070 (0.70%) LR相関: 0.51 OnTesterの結果: 0
GHPR: 1.0027 (0.27%) LR標準エラー: 134.83
総取引数: 186 売り(勝率): 94 (42.55%) 買い(勝率%) : 92 (38.04%)
総取引数: 372 勝ち取引(%): 75 (40.32%) 負け取引(%): 111 (59.68%)
最大収益: 85.26 最大損失: -264.99
平均収益: 47.01 平均損失: -28.81
最大連続勝ち($): 5 (350.60) 最大連続負け($): 6 (-255.81)
最大連続収益(数): 350.60 (5) Maximal consecutive loss (count): -413.34 (5)
平均連続勝ち: 2 平均連続負け: 2

rsistlEcurve

図3.4 RSI SL EAのエクイティカーブ

CLASSIC SL EAの結果


結果
履歴の質: 100%
バー: 20160 ティック: 603385 銘柄: 1
総収益: 3 672.06 残高ドローダウン絶対値: 215.45 初期投資からの資本ドローダウン: 217.30
粗利: 10 635.21 残高ドローダウン最大値: 829.54 (19.27%) 資本最大ドローダウン: 1 159.20 (25.59%)
総損失: -6 963.15 残高ドローダウン相対値: 48.76% (270.82) 資本ドローダウン相対値: 51.81% (303.90)
利益率: 1.53 予想損益: 15.97 証拠金レベル: 274.21%
RF: 3.17 シャープレシオ: 0.16 Zスコア: -0.14 (11.13%)
AHPR: 1.0120 (1.20%) LR相関: 0.80 OnTesterの結果: 0
GHPR: 1.0093 (0.93%) LR標準エラー: 545.00
総取引数: 230 売り(勝率): 107 (44.86%) 買い(勝率%) : 123 (38.21%)
総取引数: 460 勝ち取引(%): 95 (41.30%) 負け取引(%): 135 (58.70%)
最大収益: 392.11 最大損失: -219.95
平均収益: 111.95 平均損失: -51.58
最大連続勝ち($): 6 (1 134.53) 最大連続負け($): 9 (-211.43)
最大連続収益(数): 1 134.53 (6) Maximal consecutive loss (count): -809.21 (4)
平均連続勝ち: 2 平均連続負け: 2


classicalcure

図3.5. Classic Stop loss EAのエクイティカーブ


観察事項

両方のEAは取引期間の終わりに利益を上げましたが、最初のEA(RSI SL EA)では損失がより少なく、一部は巨額の損失であることが観察されました。

RSI SLのエクイティカーブ損失分析

図3.6. エクイティカーブの損失

これらの損失は、EAの全体的な収益性と適切な資金管理に影響を与える可能性があります。一方、従来のストップロスを使用したEAでは、損失はより大きく、取引期間の終わりの収益もより大きくなりました。


結論と推奨事項

資金管理は確かに取引の聖杯です。上記の実験から、資金管理が完全に実施されたEAは、より多くの損失で最大の利益を上げました。これは取引の一貫性によるものです。ただし、RSIでストップロスを定義しても、リスクの量が変化するため、最初のEA(RSI SL)と同じ一貫性が完全に得られるわけではありません。

推奨事項

ヘッジは、最初の(RSI SL)EAの損失を減らす1つの方法です。これにより、より一貫したリスク量が得られ、長期的には利益が向上する可能性があります。


ご精読ありがとうございました。

MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/9827

添付されたファイル |
DoEasyライブラリのグラフィックス(第90部): 標準グラフィカルオブジェクトのイベント基本機能 DoEasyライブラリのグラフィックス(第90部): 標準グラフィカルオブジェクトのイベント基本機能
本稿では、標準のグラフィカルオブジェクトイベントを追跡するための基本的な機能を実装します。グラフィカルオブジェクトのダブルクリックイベントから始めます。
取引のための組合せ論と確率論(第IV部): ベルヌーイの定理 取引のための組合せ論と確率論(第IV部): ベルヌーイの定理
本稿では、よく知られているベルヌーイスキームをハイライトし、それを使用して取引関連のデータ配列を記述する方法を示すことにしました。これらはすべて、自己適応型の取引システムを作成するために使用されます。また、より一般的なアルゴリズムを探して、その応用を見つけます。ベルヌーイの定理はその特殊なケースです。
取引のための組合せ論と確率論(第V部): 曲線分析 取引のための組合せ論と確率論(第V部): 曲線分析
本稿では、複数の状態を持つシステムを2つの状態を持つシステムに単純化する可能性に関する調査を行うことにしました。主な目的は、分析によって確率論に基づくスケーラブルな取引アルゴリズムのさらなる開発に役立つ可能性のある有用な結論を導き出すことです。もちろん、このトピックには数学が関係してきますが、以前の記事での経験から、一般化された情報の方が詳細よりも役立つことがわかっています。
MetaTrader用の高度なEAコンストラクター - BotBrains.app MetaTrader用の高度なEAコンストラクター - BotBrains.app
この記事では、自動売買ロボットのためのノーコード開発プラットフォームであるBotBrains.appの機能を紹介します。自動売買ロボットを作成するために、コードを書く必要はありません。必要なブロックをスキームにドラッグアンドドロップし、パラメータを設定して、それらの間の接続を確立するだけです。