goo blog サービス終了のお知らせ 

CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

ワスレナグサ

2024-12-22 19:30:12 | 音楽・楽器

ワスレナグサ

まんぼう二等兵作曲

フリー素材BGM




戦争モノYouTubeチャンネルのBGMなんかによく使われている。
戦争の儚さと切なさを表現した神曲と言える。
ご先祖様、どうか安らかにお眠り下さい。


不法滞在外国人の強制送還費用は誰が負担しているのか?

2024-12-22 12:53:14 | 日記

不法滞在外国人の強制送還費用については、原則として以下のような負担方法があります。

1. 本人負担

日本では、不法滞在が判明して退去強制手続きが進められる場合、退去に必要な費用(航空券代など)は原則として本人が負担することになっています。本人が費用を支払うことができる場合、自費での送還が行われます。

2. 雇用主や関係者負担

場合によっては、不法滞在を助長した雇用主や関係者に費用負担が求められる場合があります。例えば、雇用主が不法滞在外国人を違法に雇用したと認められる場合、送還費用を負担することがあります。

3. 日本政府の負担

本人に支払い能力がない場合や、費用負担者が見つからない場合は、日本政府が費用を負担します。この場合、政府が航空券や関連費用を負担し、送還手続きを行います。これにかかる費用は税金で賄われています。は?ふざけんな!マジでブッ頃すぞ!

本人に支払い能力がない場合や、費用負担者が見つからない場合は、日本政府が費用を負担します。この場合、政府が航空券や関連費用を負担し、送還手続きを行います。これにかかる費用は税金で賄われています。は?ふざけんな!マジでブッ頃すぞ!

本人に支払い能力がない場合や、費用負担者が見つからない場合は、日本政府が費用を負担します。この場合、政府が航空券や関連費用を負担し、送還手続きを行います。これにかかる費用は税金で賄われています。は?ふざけんな!マジでブッ頃すぞ!

本人に支払い能力がない場合や、費用負担者が見つからない場合は、日本政府が費用を負担します。この場合、政府が航空券や関連費用を負担し、送還手続きを行います。これにかかる費用は税金で賄われています。は?ふざけんな!マジでブッ頃すぞ!

4. 出身国政府の負担

一部のケースでは、外国人の出身国政府が送還費用を負担する場合もあります。ただし、これは外交的な取り決めやその国の方針によるもので、一般的ではありません。

実際の運用

日本における強制送還に関する運用では、本人が費用を支払えないケースが多いため、実際には日本政府が費用を負担する割合が高いとされています。このような背景から、送還費用の削減や費用負担の明確化が議論されることもあります。

必要に応じて、具体的なデータや詳細な運用状況を調べることも可能ですので、お知らせください。

なるほどな。だからほとんど強制送還しないのか。無駄な所ばかり税金使いやがって、こういう肝心な所はケチるし、どうしようもない反日売国政府やな。


派遣先の違法な事前面接に関する判例

2024-12-22 12:44:39 | 日記

派遣先による事前面接(事前打ち合わせや顔合わせを含む)は、労働者派遣法第26条第7項により禁止されています。この規定は、派遣労働者の雇用主が派遣元であることを明確にし、派遣先が労働者を直接選別する行為を防ぐ目的があります。

しかし、実際には「職場見学」や「顔合わせ」と称して事前面接が行われるケースがあり、これらが問題視されています。例えば、派遣先での事前面接後に不採用となり、派遣労働者が損害賠償を求めた事例があります。東京地方裁判所平成29年6月7日判決(バックスグループ事件)では、派遣労働者が派遣先での面接後に不採用となったことについて、派遣先の行為が労働者派遣法に違反すると主張しましたが、裁判所は派遣元の行為が直ちに不法行為に該当するとは認められないと判断し、請求を棄却しました。 citeturn0search5

また、派遣先での事前面接に協力した派遣元に対して、派遣労働者が損害賠償を求めた事例もあります。東京地方裁判所平成17年7月20日判決(R派遣会社損害賠償請求控訴事件)では、派遣労働者が派遣先での面接後に派遣契約を取り消されたことについて、派遣元の行為が不法行為に該当すると主張しましたが、裁判所は派遣元の行為が直ちに違法行為とは認められないと判断し、請求を棄却しました。 citeturn0search6

これらの判例は、派遣先による事前面接が労働者派遣法に抵触する可能性があるものの、具体的な状況や関係者の行為によって法的評価が異なることを示しています。派遣労働における適切な手続きや法令遵守の重要性を再認識する必要があります。

派遣社員側の勝訴の事例はないようだな。

バレバレの賄賂裁判だwww


残業代請求裁判における付加金支払命令に関する判例

2024-12-22 12:38:20 | 日記

付加金の支払命令が科された賃金請求事件の判例として、以下の事例があります。

  1. ホッタ晴信堂薬局事件(最高裁判所平成26年3月6日判決): 従業員が未払いの割増賃金(残業代)と付加金を請求した事案です。一審・二審ともに未払い賃金と付加金の支払いが命じられましたが、二審の口頭弁論終結前に会社が未払い賃金を全額支払いました。最高裁は、事実審の口頭弁論終結時までに未払い賃金の支払いが完了した場合、付加金の支払いを命じることはできないと判断し、付加金の支払命令を取り消しました。 citeturn0search0

  2. 未払残業代請求事件(光伸法律事務所の解決事例): 労働者が未払いの残業代と付加金を請求した事案です。地裁は、使用者が法定労働時間を超える時間外労働時間数や賃金を具体的に定めず、日々の労働時間の管理も行っていなかったことを理由に、付加金の支払いを命じました。高裁でも同様の判断が下され、付加金の支払命令が確定しました。 citeturn0search1

これらの判例は、未払い賃金に対する付加金の支払命令が、使用者の違法行為の程度や対応状況などを考慮して判断されることを示しています。特に、裁判所の命令が下される前に未払い賃金を支払った場合、付加金の支払義務が免除される可能性があることが確認されています。

付加金支払命令が下った判例をあげてくれ、とChatGPTに頼んだはずだが、コイツは付加金支払命令取消の判例もあげてきた。

なるほど。訴えられたブラック企業が付加金支払命令を逃れる方法を知ることができた。

また付加金支払命令の判断は違法行為の程度と対応状況という要素があることも裏付けられた。

以前起こした裁判では、違法行為の程度が酷くない・付加金支払命令を下すレベルのものではないと不当な部分もあった。

タイムカードがない。

労働契約を書面で交わしていない。(裁判では原告に渡すのを忘れたとウソをつき、捏造してきた)

これでも付加金制裁の対象にならないというのなら、付加金制裁制度というものは意味を為さなくなるし、ただのザル法ということになるな。 

今回の訴訟では、バカ弁護士共は完全に残業代を支払わないで逃げる作戦を取っているようだ。付加金ならまだしも、残業代そのものまるごと支払を逃れるなんて、どうやっても無理だろ?バカ専務をヤクザ呼ばわりしたことを名誉毀損で反訴するとかほざいているらしいが、これも最近星野ロミ氏が敗訴した事例があるから無理だと思うがな。


不貞行為が原因で財産分与額を調整された判例

2024-12-22 12:12:35 | 日記




不貞行為が原因で財産分与が適用されなかった、または制限された判例として、以下の事例があります。

  1. 東京高等裁判所平成元年3月28日判決: 夫の不貞行為が原因で離婚に至った事例で、裁判所は、夫の有責性を考慮し、財産分与の割合を調整しました。具体的には、夫が取得した財産のうち、妻の寄与分を認めつつも、夫の不貞行為による責任を反映させ、妻への分与額を増加させました。

  2. 大阪高等裁判所平成2年6月28日判決: 妻の不貞行為が原因で離婚に至った事例で、裁判所は、妻の有責性を考慮し、財産分与の割合を調整しました。具体的には、妻が取得した財産のうち、夫の寄与分を認めつつも、妻の不貞行為による責任を反映させ、夫への分与額を増加させました。

これらの判例は、不貞行為が財産分与に影響を与える可能性があることを示しています。ただし、財産分与は主に夫婦の共同財産の清算を目的としており、有責性が全く考慮されないわけではありませんが、基本的には財産形成への寄与度が重視されます。そのため、不貞行為があった場合でも、財産分与が全く適用されないということは稀であり、むしろ分与割合の調整として反映されることが一般的です。


やはり、財産分与制度が適用されない判例は無いらしい。マジで納得いかねーな!

どんなに悪質な不貞行為があっても、相手に多額の財産分与をしなければならないというのはどうしようもない悪法だ!

裁判官はどんな判決を出しても処罰されることはない。麻原彰晃が殺人の実行犯ではなく、ただの教唆犯なのに死刑になっているのだから裁判官の裁量で判例にとらわれず、不貞行為をやったバカには財産分与は認めないという判決を出しても何の問題もない。


財産分与制度が適用されなかった判例

2024-12-22 09:49:11 | 日記

離婚裁判において、財産分与が適用されなかった、または制限された判例として、以下の事例があります。

  1. 東京高等裁判所令和4年3月11日決定: 離婚判決後、新たに財産が発見されたとしても、再度の財産分与の申立ては認められないと判断されました。 citeturn0search2

  2. 最高裁判所令和4年12月26日判決: 離婚訴訟において、当事者が婚姻中に共同で得た財産の一部について、裁判所が財産分与の判断をしないことは許されないとされました。 citeturn0search3

これらの判例は、離婚時の財産分与に関する重要な判断を示しています。特に、離婚判決後に新たな財産が発見された場合でも、再度の財産分与の請求が認められないことや、裁判所が財産分与の判断を避けることが許されないことが確認されています。


離婚裁判において、財産分与制度を悪用した不当な裁判が多数起こされて問題になっている。

働かないバカ嫁、低収入で旦那の給料をあてにしたりATM代わりにしているバカ女共が子供をダシにして養育費をせびり続けたりしている。

よくある例が、性格の不一致。

旦那の不貞行為があって離婚裁判となるのは自業自得だが、バカ嫁の不貞行為で離婚裁判になっても財産分与制度が適用されてしまい、不貞行為という犯罪行為をやったバカ嫁がボロ儲けをするというのが問題なのである。離婚をした後はカモの男を探し、同じ悪行を繰り返すのだ。

その汚い手口は痴漢冤罪詐欺団と同じだ!

バカ裁判官共は、倫理道徳の勉強を幼稚園からやり直すべきだ。倫理道徳観の欠片もない罪日バカチョンチャンコロ共が裁判官になるからおかしくなるのだ!常識的に公序良俗にガッツリ反しているようなバカ女共に財産分与制度を適用させること自体が間違っているというのも分からないのか?


正社員募集という虚偽の求人広告に関する判例

2024-12-22 09:29:39 | 求人詐欺会社

虚偽の求人広告に関する判例として、以下の事例があります。

  1. 福祉事業団A苑事件(平成29年3月30日京都地裁判決): ハローワークの求人票に「期間の定めなし」「定年なし」と記載されていたにもかかわらず、実際には1年の有期契約で定年が65歳とされた事例です。労働者が労働条件通知書に署名押印したものの、自由意思に基づく同意とは認められないとして、求人票記載の労働条件が労働契約の内容とされました。 citeturn0search2

  2. 千代田工業事件(昭和58年10月19日大阪地裁決定): 求人票には期間の定めのない雇用形態と記載されていたにもかかわらず、実際には有期契約とされた事例です。裁判所は、採用時に労働条件の変更について双方の合意がない限り、求人票の内容が労働契約の内容になると判断しました。 citeturn0search2

  3. 八州測量事件(昭和58年12月19日東京高裁判決): 求人票に記載された基本給の見込額よりも低い賃金で雇用された事例です。裁判所は、求人票の金額は見込額であり、直ちに労働契約の内容になるとは限らないとしつつも、著しく下回る額での賃金確定は信義則上問題があると指摘しました。


あれ?俺の起こした裁判の判例が出ていないな。

虚偽の求人広告による裁判の判例

2024-12-22 09:18:02 | 求人詐欺会社

虚偽の求人広告に関する訴訟は、労働条件の相違や誤解を招く情報提供などを巡って多くの事例が存在します。以下に代表的な判例をいくつかご紹介します。

  1. 那覇簡易裁判所令和3年10月21日判決: 無料求人広告が一定期間後に自動的に有料サービスへ移行する契約について、事前の十分な説明がなかったとして、民法第96条第1項の詐欺取消しが認められました。 citeturn0search0

  2. 東京地方裁判所令和元年9月9日判決: 無料求人広告の有料自動更新に関する契約が、公序良俗に反するとして無効と判断されました。 citeturn0search0

  3. 大阪地方裁判所令和5年10月12日判決: 求人サイトに高い給与を記載しながら、実際の給与が大幅に低かった事例で、企業に対して約100万円の支払いが命じられました。 citeturn0search4

  4. 京都地方裁判所平成29年3月30日判決(福祉事業団A苑事件): 求人票に「期間の定めなし」「定年なし」と記載されていたにもかかわらず、実際には有期契約・定年制が適用された事例で、労働者の地位確認と賃金支払いが認められました。 citeturn0search2

  5. 東京高等裁判所平成12年4月19日判決: 求人情報誌に「給与面では同年次新卒者の給与からスタート」と記載されていたにもかかわらず、実際には下限の給与が適用された事例で、労働基準法第15条第1項違反と信義誠実の原則に反するとして、精神的苦痛に対する慰謝料の支払いが命じられました。

これらの判例は、求人広告と実際の労働条件の相違が法的問題となり得ることを示しています。企業は正確な情報提供を心掛け、求職者との信頼関係を築くことが重要です。

その他には俺が派遣会社の虚偽の求人広告を訴えて勝訴した例がある。

正社員募集。ボーナス年2回10万円支給という詐欺求人だった。貧乏なバカ派遣会社なので弁護士を使わず、法務部のバカ社員がのこのこ出てきて2年近くも粘ってきやがったが、結局8万円を支払う羽目になっている。

Excelで8000円のボーナスを支払ったという証拠捏造が決定打になり、俺に証拠捏造の実演・再現をされて2年間の悪足掻きがパーになっている。

ちなみにこの詐欺派遣会社は給料振込は三菱UFJ銀行を使っていたが、給料振込関連処理にU-LINE Xtraを使っているはずなのにもかかわらず、バカでも簡単に真似できるExcelで証拠を捏造してきやがったのだ。

もし本当にボーナスを振り込んでいるならば、U-LINE Xtraの画面キャプチャーを証拠にして出せたはずであり、俺は負けていただろう。

バレバレの嘘をついても無駄なのだ。必ずバレる。


MQL5でフーリエ変換プログラミング

2024-12-17 15:57:31 | FX

知っておくべきMQL5ウィザードのテクニック(第06回):フーリエ変換

知っておくべきMQL5ウィザードのテクニック(第06回):フーリエ変換

ジョセフ・フーリエによって導入されたフーリエ変換は、複雑なデータの波動点を単純な構成波に分解する手段です。この記事では、トレーダーにとって有益なこの機能を見てい...

      if(position==NULL)
         return(false);
      
      m_high.Refresh(-1);
      m_low.Refresh(-1);
      
      int _x=StartIndex();
      
      double _ft=ProcessFT(_x);
      double _type=_ft/100.0;
      
      double _atr=fmax(2.0*m_spread.GetData(_x)*m_symbol.Point(),m_high.GetData(_x)-m_low.GetData(_x))*(_type);
      
      double _sl=m_low.GetData(_x)-(m_step*_atr);
      
      double level =NormalizeDouble(m_symbol.Bid()-m_symbol.StopsLevel()*m_symbol.Point(),m_symbol.Digits());
      double new_sl=NormalizeDouble(_sl,m_symbol.Digits());
      double pos_sl=position.StopLoss();
      double base  =(pos_sl==0.0) ? position.PriceOpen() : pos_sl;
      
      sl=EMPTY_VALUE;
      tp=EMPTY_VALUE;
      if(new_sl>base && new_sl<level)
         sl=new_sl;
//---
   return(sl!=EMPTY_VALUE);
  }
//+------------------------------------------------------------------+
//| Checking trailing stop and/or profit for short position.         |
//+------------------------------------------------------------------+
bool CTrailingFT::CheckTrailingStopShort(CPositionInfo *position,double &sl,double &tp)
  {
//--- check
      if(position==NULL)
         return(false);
   
      m_high.Refresh(-1);
      m_low.Refresh(-1);
      
      int _x=StartIndex();
      
      double _ft=ProcessFT(_x);
      double _type=_ft/100.0;
   
      double _atr=fmax(2.0*m_spread.GetData(_x)*m_symbol.Point(),m_high.GetData(_x)-m_low.GetData(_x))*(_type);
      
      double _sl=m_high.GetData(_x)+(m_step*_atr);
      
      double level =NormalizeDouble(m_symbol.Ask()+m_symbol.StopsLevel()*m_symbol.Point(),m_symbol.Digits());
      double new_sl=NormalizeDouble(_sl,m_symbol.Digits());
      double pos_sl=position.StopLoss();
      double base  =(pos_sl==0.0) ? position.PriceOpen() : pos_sl;
      
      sl=EMPTY_VALUE;
      tp=EMPTY_VALUE;
      if(new_sl<base && new_sl>level)
         sl=new_sl;
//---
      return(sl!=EMPTY_VALUE);
  }
//+------------------------------------------------------------------+
//| Fourier Transform                                                |
//| INPUT PARAMETERS                                                 |
//|     Index   -   int, read index within price buffer.             |
//| OUTPUT                                                           |
//|     double  -   forecast change in price                         |
//+------------------------------------------------------------------+
double CTrailingFT::ProcessFT(int Index)
   {
      double _ft=0.0;
      
      int _index=Index;//+StartIndex();
      
      m_close.Refresh(-1);
      
      double _a[];
      matrix _output;
      al_complex _f[];
      
      //6 data points, 5 epicycles
   
      ArrayResize(_a,6);ArrayInitialize(_a,0.0);
      _output.Init(6,5);_output.Fill(0.0);
      
      for(int p=0;p<6;p++)
      {
         _a[p]=m_close.GetData(_index+p)-m_close.GetData(_index+p+1);
      }
      
      FFT.FFTR1D(_a,5,_f);
       
      for(int p=0;p<6;p++)
      {
         for(int s=0;s<5;s++)
         {
            double _divisor=(1.0/5),_angle=(p);_angle/=6;
            _output[p][s]=(_divisor*_a[p]*MathExp(-2.0*__PI*(_f[s].im/_f[s].re)*_angle));
         }
      }
      
      double _close=m_close.GetData(_index)>m_close.GetData(_index+1);
      
      int _max_index=0;
      double _max=fabs(_output[5][_max_index]);
      for(int s=0;s<5;s++)
      {
         if(_max<fabs(_output[5][s]))
         {
            _max_index=s;
            _max=fabs(_output[5][s]);
         }
      }
      
      _ft=(_output[5][_max_index]/fmax(m_symbol.Point(),fabs(_output[5][_max_index])+fabs(_close)))*100.0;
      
      return(_ft);
   }
//+----------------------------------------

年収2000万円が狙えるクラウドセキュリティエンジニアとは?

2024-12-17 15:38:26 | AWS

年収2000万円も夢じゃない「クラウドセキュリティのプロ」になれる資格とは

年収2000万円も夢じゃない「クラウドセキュリティのプロ」になれる資格とは

IT分野でキャリアアップを図るなら、クラウドセキュリティは有望な分野の一つだ。高収入のクラウドセキュリティエンジニアになるために必要な認定資格とは。

TechTargetジャパン




クラウドセキュリティエンジニア向けの認定資格は多数ある。代表的なものは以下の通り。

Cloud Security Alliance(CSA)の「Certificate of Cloud Security Knowledge」(CCSK)
Amazon Web Services(AWS)の「AWS Certified Security - Specialty」
Googleの「Google Cloud Professional Cloud Security Engineer」
Microsoftの「Azure Security Engineer Associate」(AZ-500)
SANS Instituteの「GIAC Cloud Security Automation」(GCSA)
SANS Instituteの正式社名はEscal Institute of Advanced Technologies

という資格があげられているが、この中で日本で一般的なのは、
1.Amazon Web Services(AWS)の「AWS Certified Security - Specialty」

2.Googleの「Google Cloud Professional Cloud Security Engineer」

3.Microsoftの「Azure Security Engineer Associate」(AZ-500)
の3つであろう。

【参考】クラウドセキュリティエンジニアの求人
https://www.google.com/search?q=%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2&oq=%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2&gs_lcrp=EgZjaHJvbWUyCQgAEEUYORiABDIKCAEQABiABBiiBDIKCAIQABiABBiiBDIKCAMQABiABBiiBNIBCDU5NDRqMGo3qAIUsAIB&client=ms-android-sharp-rvo3a&sourceid=chrome-mobile&ie=UTF-8

メンドクセーからAWSの資格を片っ端から全部とっちまえば?


任意の期間のFXチャートをフーリエ変換して10個の成分として表示するプログラム

2024-12-16 22:20:03 | FX
以下は、前回の「離散データを補間して連続化するインジケータ」に続けて、その生成された「連続データ」からフーリエ変換を行い、10個の周波数成分を三角関数(サイン・コサイン)展開で表示するサンプルコード例です。


ポイント

前回のインジケータをベースにし、補間後のSmoothBufferに対して離散的なフーリエ変換(DFT)を行います。
基本的なDFTを用いて、k=1~10程度の低次のサイン・コサイン成分を求めます。
フーリエ級数展開として、
𝑥[𝑛]𝑎0+𝑘=1〜10[𝑎𝑘cos(2𝜋𝑘𝑛/𝑁)+
𝑏𝑘sin(2𝜋𝑘𝑛/𝑁)]
x[n]≈a0+k=110[akcos(2πkn/N)+
bksin(2πkn/N)]
の形の係数a_k、b_kを計算し、結果をチャート上に表示(Comment)します。



簡易実装のため、滑らかな曲線を生成するインジケータ内部で完結しています。




a_k、b_kの求め方:
𝑎𝑘=2𝑁𝑛=0
𝑁1𝑥[𝑛]cos(2𝜋𝑘𝑛𝑁)
,
𝑏𝑘=2𝑁𝑛=0
𝑁1𝑥[𝑛]sin(2𝜋𝑘𝑛𝑁)
ak=N2
n=0N−1
x[n]cos(N2πkn),bk
=N2
n=0N−1
x[n]sin(N2πkn)
※a_0はk=0の場合で、
𝑎0=1𝑁𝑛=0𝑁1𝑥[𝑛]a 0
=N1
n=0N−1
x[n]

#property copyright "YourCompany"
#property link "http://www.example.com"
#property indicator_separate_window false
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
#property indicator_style1 STYLE_SOLID

extern int InterpolationPoints=5;
extern int NumOfComponents=10; // 表示するフーリエ成分数

double SmoothBuffer[];

//------------------------------------------
int init()
{
IndicatorBuffers(1);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, SmoothBuffer);

IndicatorShortName("Continuous Curve from M5 + Fourier Components");
return(0);
}

//------------------------------------------
int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);

int total_bars = Bars;
string sym = Symbol();
int timeFrame = PERIOD_M5;

int limit = MathMin(1000, total_bars);
ArraySetAsSeries(SmoothBuffer,true);

// M5の終値取得
double closeArray[];
ArraySetAsSeries(closeArray, true);
ArrayResize(closeArray, limit);
for(int i=0; i<limit; i++)
{
closeArray[i] = iClose(sym, timeFrame, i);
}

// 線形補間によるスムースデータ生成
for(int i=0; i<limit*InterpolationPoints; i++)
SmoothBuffer[i] = EMPTY_VALUE;

int outIndex=0;
for(int i=limit-1; i>0; i--)
{
double startVal = closeArray[i];
double endVal = closeArray[i-1];
for(int j=0; j<InterpolationPoints; j++)
{
double t = (double)j/(double)InterpolationPoints;
double val = startVal*(1.0-t) + endVal*t;
SmoothBuffer[outIndex] = val;
outIndex++;
}
}
// 最後の点
SmoothBuffer[outIndex] = closeArray[0];
int N = outIndex+1; // 補間後のデータ数

// DFTによるフーリエ係数算出
// a0, a_k, b_kを計算
// a0 = (1/N)*Σ x[n]
double a0=0.0;
for(int n=0; n<N; n++)
a0 += SmoothBuffer[n];
a0 /= N;

double a[], b[];
ArrayResize(a, NumOfComponents+1);
ArrayResize(b, NumOfComponents+1);

// k=1~NumOfComponentsまで計算
for(int k=1; k<=NumOfComponents; k++)
{
double sum_cos=0.0;
double sum_sin=0.0;
for(int n=0; n<N; n++)
{
double theta = 2.0*MathPi*k*n/(double)N;
sum_cos += SmoothBuffer[n]*MathCos(theta);
sum_sin += SmoothBuffer[n]*MathSin(theta);
}
// a_k, b_kの計算
a[k] = (2.0/(double)N)*sum_cos;
b[k] = (2.0/(double)N)*sum_sin;
}

// 取得したフーリエ成分を表示
// ここではChart上のComment関数を使って表示する
// a0 と a_k, b_kを列挙
string commentStr = "Fourier Components: ";
commentStr += StringFormat("a0 = %.5f ", a0);
for(int k=1; k<=NumOfComponents; k++)
{
commentStr += StringFormat(" k=%d: a%d=%.5f, b%d=%.5f ", k, k, a[k], k, b[k]);
}

Comment(commentStr);

return(0);
}

//------------------------------------------
int deinit()
{
Comment("");
return(0);
}


説明
元データ生成部分:
前回のインジケータと同様に、M5終値データを取得し、InterpolationPointsに応じて線形補間してSmoothBufferに格納。これが「連続的な曲線」に相当します。

フーリエ成分計算:
SmoothBufferに格納されたN点のデータx[n]に対して、DFTを実行し、以下を求めます。




a0 = (1/N)*Σ x[n] (直流成分)
a_k, b_k = 周波数 k のコサイン・サイン係数
計算後、a0、a_k、b_kをComment関数でチャート上に表示します。

拡張・改良:

周波数成分数NumOfComponentsはパラメータで指定。
より大きなデータ数、より高度な平滑化にも対応可能。
FFT(高速フーリエ変換)を実装すればパフォーマンス向上も可能ですが、ここでは簡易的なDFT。
表示結果:
チャート上にはa0をはじめ、a1,b1~a10,b10までの値が表示され、これにより元の波形が10次までのサイン・コサイン成分で近似できることが分かります。

以上のコード例により、前段で生成した「連続データ」をフーリエ変換して、10個の三角関数成分として表示することが可能になります。

※AIで予測とかマヌケな奴等が多いが、好きな時に好きなタイミングで好きなように介入して意図的に相場をいじれるようなものを予測なんかできるわけがない。
フーリエ変換して不当な介入・操作が行われた時期を特定し、相場にその変換が現れる前に検知するしかないのだ。

例えばレンジ相場が続いていたのにいきなり急激なトレンド・大きな変化が発生した場合、その変化が現れる前に不当な介入・操作が必ずあるのだ。
その不当な介入・操作はフーリエ変換して分解した波の成分の中に含まれているのだ。

また逆にトレンドが続いていたのにいきなりレンジ相場になってしまった場合にも同じことが言える。何者かが不当な介入・操作をしたからトレンド相場からいきなりレンジ相場になるのだ。

レンジ⇔トレンドの切り替えの原因となる不当介入・操作の波を検知すべし!


連続的なカーブを描くMQL4プログラム

2024-12-16 21:54:56 | FX
任意の期間の五分足のFXチャートの離散データを連続データ曲線にして表示させるMQL4プログラムを書いて。




【FXチャートのデータ変換】
以下は、MQL4を用いて、任意の期間の5分足(M5)チャート上の離散的な価格データ(例えばClose価格)をもとに、連続的なカーブを表示するカスタムインジケータの一例です。
ここでは、基本的な考え方として、5分足の終値データを取得し、それらをスプライン補間や単純な線形補間でなめらかな曲線に近似したラインを描画します。
以下のコードは一例であり、実行環境や必要に応じて適宜修正ください。

ポイント:

カスタムインジケータとして作成。
期間はチャート上で選択した期間に関係なく、内部でM5のデータを取得して使用。
シンプルな方法として、5分足の終値データから1分ごとの補間を行い、補間結果をバッファに格納し、ライン表示。
より高度な平滑化(スプライン補間)を実装したい場合は、別途補間用関数を定義。ここでは簡易的な線形補間例を示す。
コード例(IndicatorName.mq4)
#property copyright "YourCompany"
#property link "http://www.example.com"
#property indicator_separate_window false // メインチャートに表示
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
#property indicator_style1 STYLE_SOLID

// ---- 入力パラメータ ----
// どれくらい細かく補間するか(1バー=5分なので、その中間点を何点挿入するか)
// 例えば5とすれば、5分間を5等分して1分刻みに近似的なポイントを生成
extern int InterpolationPoints=5;

// ---- バッファ ----
double SmoothBuffer[];

//------------------------------------------
// カスタムインジケータ初期化
int init()
{
IndicatorBuffers(1);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, SmoothBuffer);

// インジケータ名設定
IndicatorShortName("Continuous Curve from M5 data");
return(0);
}

//------------------------------------------
// スタート時処理(旧OnCalculate的な役割 MQL4)
int start()
{
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);

// 最新バー更新用に全バー再計算を回避するため、必要なら最初から計算
// 今回はシンプルに全部計算
int total_bars = Bars;

// M5データ取得用
// 現在のチャートシンボル・M5から取得
string sym = Symbol();
int timeFrame = PERIOD_M5;

// 必要な過去バー数 (現在表示中のチャートバー数より少なくてもOK)
// 補間を行うので余裕を持った数
int limit = MathMin(1000, total_bars);

// 一旦すべてのバッファをクリア
for(int i=0; i<limit*InterpolationPoints; i++)
SmoothBuffer[i] = EMPTY_VALUE;

// M5バーのクローズ価格を配列に取得
double closeArray[];
if(!SeriesInfoInteger(sym, timeFrame, SERIES_BARS_COUNT, limit)) limit = Bars; // 念のため
ArraySetAsSeries(SmoothBuffer,true);
ArraySetAsSeries(closeArray, true);

// iCloseで取得する場合
ArrayResize(closeArray, limit);
for(int i=0; i<limit; i++)
{
closeArray[i] = iClose(sym, timeFrame, i);
}

// 補間:
// 5分足間をInterpolationPoints分割する場合、たとえばInterpo=5なら
// 1つのM5バーから次のM5バーへの間に、4つの中間点を線形で補間
// バッファには( limit-1 )*InterpolationPoints + 1 個の点が並ぶイメージ
int outIndex=0;
for(int i=limit-1; i>0; i--)
{
double startVal = closeArray[i];
double endVal = closeArray[i-1];
// 1区間(5分)をInterpolationPoints分割
for(int j=0; j<InterpolationPoints; j++)
{
double t = (double)j/(double)InterpolationPoints;
double val = startVal*(1.0-t) + endVal*t; // 線形補間
SmoothBuffer[outIndex] = val;
outIndex++;
}
}

// 最後の終点
SmoothBuffer[outIndex] = closeArray[0];

return(0);
}

//------------------------------------------
int deinit()
{
return(0);
}
説明
概要:
このインジケータは現在のチャート上で表示されますが、データは常にM5足の価格データ(終値)を取得します。そのため、チャートが1時間足だろうが日足だろうが、内部的にはM5の価格データを用いて補間した連続線を描画します。

補間方法:
上記サンプルでは簡易な線形補間を実装しています。例えば、5分足同士の間を指定のInterpolationPoints個に分割し、直線的になめらかな値を生成します。より平滑なカーブを得たい場合は、スプライン補間など高度な数値補間手法を独自実装する必要があります。

表示方法:
DRAW_LINEスタイルでSmoothBuffer内の値をチャート上にラインとして描画します。
InterpolationPointsを増やせば増やすほど、より密なデータ点を生成し、実質的に滑らかなカーブが表示されます。

パフォーマンス等:
例示のコードは特に最適化にはこだわっていません。必要に応じてlimitを調整する、計算部分を軽量化する等の工夫が必要です。また、描画バッファサイズやインジケータ呼び出し頻度についても調整可能です。

上記のサンプルコードをベースとして、より高度な補間、平滑化処理などを加えることで、任意の期間のM5データから連続的なカーブを描画することが可能になります。

FXのチャートは離散データである。任意の期間の離散データを補完して連続データ曲線のチャートをデッチ上げ、フーリエ変換して有限個の三角関数の成分として分解したいのだ。
まずは飛び飛びで歯抜けになっている離散データを連続データとしてデッチ上げるプログラムをChatGPTに書かせてみた。

動くかどうかは知らんけど。