指定した曜日にエントリー禁止制御出来る関数

オリジナル関数

どうも潤奈です( ・Д・)

今回はパラメーターで指定した曜日にエントリーしないように制御する為のオリジナル関数を作成したいと思います。

オリジナル関数って?という方はこちらのEA講座を最後まで閲覧して頂くと理解出来ると思います。

スポンサーリンク

必要なパラメーター

制御したい時間帯を設定画面から設定出来るようにパラメーターを設定します。

6列ありますが曜日毎に設定出来るようにしているので仕組みは1種類ですね。

それぞれの曜日の変数としてNoEntryM~S変数をbool型で宣言をします。

今回は取引禁止にしたい時はtrueに設定しています。

オリジナル関数を作成

ではまずオリジナル関数の全文をご覧下さい。

では順番に説明をして行きます。

まずは枠を作成します。

WeekdayCheck関数をbool型で宣言をします。

この関数に求めるものは、現在の曜日が設定した禁止曜日であるかどうかですので、bool型としてtrue(禁止曜日)かfalse(禁止曜日以外)を返してもらいます。

引数はありません。

まず現在の曜日が何曜日かを取得するにはDayOfWeek()関数を利用します。

こちらのDayOfWeek()関数の戻り値は後ろにコメントでも書いてある通り、最後に受信したサーバー時間の曜日(0:日~6:土)を数値で返す関数です。

この関数で取得した番号をint型で宣言したWeekday変数に代入します。

次にif()関数でパラメーターで対象曜日が禁止(true)にしているか、現在の曜日が禁止曜日(1:月~6:土)かをチェックして行きます。

「&&」で2つの条件を繋いでいますので、どちらも条件を満たした場合はreturn(true);でtrueを返します。

つまり現在の曜日は禁止されています。となります。

条件を満たしていない場合はif()関数の次にある処理はスルーされますので、次の条件を確認しに行きます。

最後まで条件に合致しない場合は、return(false); で禁止されている曜日ではありませんとfalseを返します。

使用方法プログラム

まずは全文のプログラムです。

では説明です。

まずEntry変数をbool型で宣言してfalseを代入しておきます。

WeekdayCheck()関数を使用して禁止曜日か確認してその結果をEntry変数に代入します。

今回の設定は結果がtrue=禁止曜日、false=禁止曜日でない事を表していますね。

その結果をif()関数でチェックして、false=禁止曜日でない場合は、エントリーロジックに入るようにします。

if()関数の{}は真(true)の場合に処理に進むので、「!」を頭に付ける事で意味を逆にさせてEntry==falseという結果をtureに変えて、if()関数でチェックをして処理させる事でEntry==falseの時に{}内の処理に進めさせる事が出来ます。

まとめ

いかがでしたでしょうか。

これを応用して上手くプログラムの中に組み込んでみて下さい。

if()関数はとても使いやすくて分かりやすいですが、今回のように沢山並んでいるとシンプルではないですね。

ただ一番理解しやすい構造ではないかと思いますので、これはこれで良いとは思います。

次はまた違った書き方も試してみたいと思います。

では、少しでも参考になれば( ・Д・)

コメント

タイトルとURLをコピーしました