精华内容
下载资源
问答
  • 怎么把用c语言开发的程序变成软件

    千次阅读 2019-10-13 15:34:05
    身为小白的我最近在学C语言,想想学完点实际性的东西,写一个小游戏自己玩一玩,但是写好的游戏怎么把它倒腾成可以在电脑安装的软件那,???? 于是就各种上网搜,找到一篇不错的回答,虽然没告诉具体的怎样做,...

    原文链接
    身为小白的我最近在学C语言,想想学完做点实际性的东西,写一个小游戏自己玩一玩,但是写好的游戏怎么把它倒腾成可以在电脑安装的软件那,????
    于是就各种上网搜,找到一篇不错的回答,虽然没告诉具体的怎样做,但是我感觉能给学习C语言带来一点启发,就搬运过来了,原文链接在上面,下面是提问者的问法和大牛的答案

    问:
    我们学C,学算法,学数据结构,可是这些学出来有什么用呢?一行行的程序,可是却变成不了软件啊?
    比如,拿个最简单的例子,写了个程序,比较两个数的大小,输入两个数,然后显示比较大的那个!
    我想做个软件,是一个EXE文件,然后出现两个书写的地方,写两个数,然后一点确定,就会显示出比较大的那个数!
    我这样说的应该很清楚了吧,希望听到正常的解释,不要复制的那种.网上的东西我都看过了,没有我想要的!
    我想知道的不光是如何让程序变成EXE文件,请看看我的例子,比如,那个按扭放在哪?字体是什么样子?按扭的颜色等等~这些不是靠TURBO C就能解决的!

    答:
    不晓得是我太笨,还是大家太笨,我觉得大家要么没看出楼主的意思,要么,要么没讲清楚问题。还是让老夫来说说吧:
    首先,楼主所谓的学C,学算法,实际上就是说学会了编写代码,即知道让计算机先干什么,再干什么,最后得什么结果。他遇到的问题是,没有一个界面让他输入数据,因为他看到的几乎所有软件,都具有输入框、“确定”、“取消”、“关闭”之类的按钮,而他不知道从哪儿弄到这些按钮。
    其次,我觉得楼主要有必要建立一些“面向对象程序设计”的观念,具体我不多说,楼主可以自己查。
    希望大家不要嫌我罗嗦,因为我觉得,要为楼主解决问题很简单,但要让楼主知道为什么会有这样的迷惑,则须多说几句。
    在上世纪九十年代以前的微机,也就是人们说的286,386时代,计算机的运行速度还很低,那时候的计算机几乎不需要用到鼠标,也几乎没什么图形界面,没音响,没彩色……当然也没有windows操作系统,人们操作计算机,大都是用的DOS操作系统。屏幕是黑的,字符是白的,人们输入一组字符串组成的命令,回车,计算机就开始执行,执行完后,再由人输入下一组命令。其界面相信楼主见识过,因为楼主似乎能将原代码变成exe文件,运行时跳出一个黑框来,程序在黑框中运行。实际上,那个黑框就是DOS操作系统的界面,只不过以前的计算机上,这个界面占据了整个屏幕,而现在,却是一个窗口。也就是说,windows操作系统为了方便老用户,提供了这样一个功能:可以运行DOS操作系统的程序,只不过不是占据整个屏幕,而是将其显示在一个窗口中。人们可在里面运行DOS程序,就同当年使用DOS操作系统一样。楼主所学的TC,就是那个时代的程序设计软件,由于几乎不需用到图形界面,当然也没有提供相应的按钮,窗体等功能。假如你非要一个按钮,那么你先得掌握绘图语句,如画线,画点,填色等等。在公元2000年以前,湖南教育界的计算机一级考试系统界面中的那几个按钮就是这样完成的。另外,我最初学用qbasic语言设计界面时,也是这样做的,画个按钮形状,当遇到回车键时,再画个被按下去的形状,半秒种后让它又恢复弹起的形状……总之,麻烦。
    随着计算机软、硬件的高速发展以及鼠标,音响,图片,动画在计算机中的大量应用,DOS操作系统已如昔日黄花,退出了历史舞台。windows的普及,使得人们能够更方便,直观的操作电脑。那么新兴起的软件,当然需要经常用到诸如菜单、按钮,图标,滚动条,进度条,文本框之类的东西,我们把它叫做控件,在面像对像程序设计中,一个已绘好的控件就可以理解为一个对像。显然,每编一个程序都去画这些东西是相当烦人的,所以微软公司在后来提供的软件开发工具,比如visual c++中,就直接提供这些控件让人们使用,因为绘制各种控件的方式虽然麻烦,但其过程大致是相同的,所以人们只需给出诸出高度,宽度,名称之类的参数,而把绘制的过程交给了编译程序,就好像在word里面画一张表格一样,你只需用鼠标一拖,它就自己给你画好了。实际上产生的绘制语句代码,可以从头文件里找到,不过我估计没多少人去研究这些无多大意义的过程。为了便于理解,以VC++6.0为例:启动程序–新建–在“工程”栏选择“MFC AppWizard”,工程名字随便填,确定–单选“基本对话框”,然后点“完成”–最后确定。这时你可以见到一个面板,他就是你将要设计的程序的界面。初始时只有“确定”、“取消”两个按钮,当然,旁边还有一个工具箱,上面有很多其它的控件,需要的话你自己加,比如你想要两个框框输入数据,就可从工具箱中选“编辑框”,画两个就是。楼主希望按“确定”后,显示较大的数,则应该对着“确定”按右键,选“事件”,将相应的代码写在clicked事件里面,若想双击“确定”后显示,就将相应代码写在doublecliced事件里……要说更具体的操作,比如改变字体、大小、颜色、文字对齐方式等等,那是一门完整的课程,这里我就不谈了,楼主可以自己查相关资料。幸运的是,VC几乎完全兼容TC,所以TC里面设计的源程序,只要作少量的修改,就可以在VC上运行。
    说到这儿,最起码楼主的问题应该解决了,即TC本身不提供“输入框”、“确定”之类的控件,因为他不是为windows操作系统设计的开发工具,如果你非要用,就只能用其提供的绘图语句去画,那不是一般的麻烦,当然你不介意的话,可以画着玩玩,然后作成一个模板函数保存吧。如果你嫌麻烦,算了,还是将就着用"scanf"之类的函数吧,虽然不美观也不方便,但用久了就习惯了……在DOS中,一个程序甚至就可以理解为一个软件。而在windows中,则可能需要很多相对独立却又彼此关联的程序,共同完成软件功能。比如,单击“确定”时该执行的程序;单击“取消”时该执行的程序。所有这些程序和控件的集合被称为“工程”,狭义上的一个“软件”就是一个“工程”,而广义上的软件,则还包括帮助文件,说明文档,需求分析,数据流图,调试维护记录,客户说明书等等一系列乱七八糟的东西。具体可参考“软件工程”一类的书籍。
    楼主的问题,实际上代表了新一代计算机专业学生的迷惑,产生这种迷惑的本质原因,是在于教学内容跟不上时代的发展。十几年前,人们在学TC,那时学了就可以上机用,而现在,大家所见到的软件,基本上都是图形、窗口界面了,很多学生不知道自己学的程序设计,与自己平常见到的软件为何有那么大的差别。其实道理很简单:时代变了,而教科书没有变……
    我本人并不反对学习TC之类的结构化的程序设计,毕竟,那也是一种程序设计的方法,而且有了TC作基础,再学VC就不是一件难事,但是,要学习VC,真的如某些老师所言,必须先学好TC吗?

    面对C语言黑乎乎的窗口是不是会感觉学了这个有啥用?????

    嗯嗯嗯,很有用,

    展开全文
  • 在Java中进行处理异常并非是一件容易的事,初学者经常陷入困惑,甚至有经验的开发者也需要认真研讨哪些异常需要处理,哪些异常需要向上抛出。导致每个开发团队都会自己定制一套特有的异常处理规则,这...在任何事...

    d2257061fccf85a633ea473cd6183361.png

    在Java中进行处理异常并非是一件容易的事,初学者经常陷入困惑,甚至有经验的开发者也需要认真研讨哪些异常需要处理,哪些异常需要向上抛出。导致每个开发团队都会自己定制一套特有的异常处理规则,这使得新加入团队的成员都经历一段痛苦的适应期。

    尽管如此,前辈们依然总结了几个最佳实践可以遵循,这些实践被绝大多数的团队所采用,本文将为你列出9个最常用且最重要的实践来帮助你提升异常处理的技能。

    在做任何事的行动之前,知道为什么做?做了能解决什么问题?然后才去思考怎么做!这样不仅会让你思路更清晰,还可以让这件事更有价值。因此在进入探讨异常处理最佳实践的正题之前,我们首先需要解决两个问题:

    1. 什么是异常和异常处理?

    2. 为什么需要它们?

    异常及异常处理

    什么是异常?总结为一句话就是:程序在执行过程中产生的异常情况。当某些事情出现了错误异常就会发生,比如打开一个并不存在的文件、尝试在一个为null的对象上调用方法等等,都会发生异常。

    异常是不可预知的,可是一旦它发生了就需要进行异常处理,可谓知错就改善莫大焉!异常处理是一种错误处理机制,如果你不对异常做任何处理,异常将会导致应用程序崩溃。

    c6f2afe0ff682bdb1a10efdb05d0eaf9.gif

    一旦你选择了进行处理异常,也就意味着你承认问题的发生,采用必要要的措施去让应用程序从错误中恢复,从而让业务继续进行,阻止应用程序崩溃。

    577064b383fcb1ecfa99a6e932635e9a.png

    实际上异常处理并不是处理问题的唯一一种方式,如今的高级语言一般都有异常处理机制,但比较古老的如C语言是通过返回错误码的方式来处理异常的。比如数组越界比较常用的返回值是-1。

    这种方式的优点是代码逻辑易于推理,没有中断和代码跳转。另一方面,这种处理方式鼓励函数的调用者总是检查返回的错误码。但是这种检查容易造成代码污染,导致代码的可读性和可维护性降低。

    错误代码的另一个严重的缺点是缺乏上下文信息,你可能知道错误码“-5”代表找不到文件,但究竟找不到哪个文件呢!错误码就无法表述了。

    72c5e7772b05d1d0bc8ed5dc5a56f8df.gif

    错误代码一般用于面向过程的语言,对面向对象的高级语言,有些场景是无能为力的,比如构造函数异常,是无法返回错误码的。

    异常处理

    fa9c25213f8ab7fc3de528612f6fbf86.png

    当异常被抛出时,应用程序的流程就会被中断,如果没能及时处理异常,应用程序将崩溃。用户将看到异常信息,但那些信息大多他们是看不懂的,这将是一个很糟糕的用户体验,实际上异常信息还可以包装成非常友好的提示。

    所以必须进行异常处理,哪怕是为了提高用户体验、记录问题日志、优雅地退出应用程序等。

    我们可以使用代码块(try...catch...)来进行异常处理,当发生异常,通过try执行代码,如果发生异常,应用程序的流程将转移到catch中,catch捕捉到异常并进行必要的处理。

    以上表述的异常处理原理对初学者依然比较抽象,我们来举个例子

    package com.zqf;

    public class App{
        public static void main(String[] args){
            System.out.println("First line");
            System.out.println("Second line");
            System.out.println("Third line");
            //初始化具有3个元素的素组
            int[] myIntArray = new int[]{123};
            print4thItemInArray(myIntArray);
            System.out.println("Fourth line");
            System.out.println("Fith line");
        }

        private static void print4thItemInArray(int[] arr) {
            //获取第4个(下标3)元素,因为没有所以抛出异常
            System.out.println(arr[3]);
            System.out.println("Fourth element successfully displayed!");
        }
    }

    分析下这个程序,在main中初始化有3个元素的数组,把这个数组传递给私有方法print4thItemInArray,在print4thItemInArray中试图获取数组的第4个元素,由于没有第4个元素将抛出“ArrayIndexOutOfBoundsException”异常,应用程序只会打印到“Third line”。

    执行应用输出结果如下

    First line 

    Second line 

    Third line 

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

       at com.zqf.App.print4thItemInArray(App.java:20) 

       at com.zqf.App.main(App.java:14) 

    Process finished with exit code 1

    现在我们修改下,增加异常处理

    package com.zqf;

    public class App {
        public static void main(String[] args) {
            System.out.println("First line");
            System.out.println("Second line");
            System.out.println("Third line");
            //初始化具有3个元素的素组
            int[] myIntArray = new int[]{123};

            try {//捕捉异常
                print4thItemInArray(myIntArray);
            }catch (ArrayIndexOutOfBoundsException ex){//异常处理
                System.out.println("Have no four items!");
            }
            System.out.println("Fourth line");
            System.out.println("Fith line");
        }

        private static void print4thItemInArray(int[] arr) {
            //获取第4个(下标3)元素,因为没有所以抛出异常
            System.out.println(arr[3]);
            System.out.println("Fourth element successfully displayed!");
        }
    }

    现在运行看看输出

    First line 

    Second line 

    Third line                

    Have no four items! 

    Fourth line 

    Fith line

    实际上这次的异常依然会发生,因为第4个元素的确不存在,所以在"Fourth element successfully displayed!"输出之前就抛出了异常,中断执行流程,但流程跳转到catch语句块了,catch只打印了一条“Have no four items”,继续向下执行。

    Java异常体系

    fa9c25213f8ab7fc3de528612f6fbf86.png

    在Java中,所有的异常都有一个共同的祖先Throwable,它有2个子类:Exception(异常)和Error(错误),它们又各自有大量的子类。Exception(异常)和Error(错误)的共性和区别:两者都可以被捕捉,但前者可以被应用程序本身处理,后者是严重的,是无法恢复处理的。

    4d202adfe2ea77923f7ac78d62bee85f.png

    最佳实践

    fa9c25213f8ab7fc3de528612f6fbf86.png

    1用Finally或Try-With-Resource清理资源

    我们经常在try语句块使用资源,比如InputStream,使用完后需要关闭。经常犯的错误是在try语句块中关闭资源。

    public void doNotCloseResourceInTry() {
        FileInputStream inputStream = null;
        try {
            File file = new File("./tmp.txt");
            inputStream = new FileInputStream(file);

            // 使用inputStream读取文件

            // 不要这样做
            inputStream.close();
        } catch (FileNotFoundException e) {
            log.error(e);
        } catch (IOException e) {
            log.error(e);
        }
    }

    这种方式看似非常完美,不会有异常抛出,所有的语句在try中执行,关闭IputStream释放资源。但试想一下:如果在“inputStream.close()”语句之前就抛出异常,会怎样呢?正常的流程会被中断并跳转,导致InputStream根本没关闭。

    因此,应该把清理资源的代码放在finally或try-with-resource语句中。不管是正常执行完try语句块,还是异常处理完毕,都会执行finally语句块,而你需要确保在finally关闭所有打开的资源。

    public void doNotCloseResourceInTry() {
        FileInputStream inputStream = null;
        try {
            File file = new File("./tmp.txt");
            inputStream = new FileInputStream(file);

            // 使用inputStream读取文件
        } catch (FileNotFoundException e) {
            log.error(e);
        } catch (IOException e) {
            log.error(e);
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (Exception e) {
                    log.error(e);
                }
            }
        }
    }

    在JDK7引入了try-with-resource的语法,简单来说当一个资源对象(如InputSteam对象)实现了AutoCloseable接口,那么就可以在try关键字后的括号里创建实例,当try-catch语句块执行完毕后,会自动关闭资源,代码也会简洁许多。如下

    public void doNotCloseResourceInTry() {
        File file = new File("./tmp.txt");
        try (FileInputStream inputStream = new FileInputStream(file)) {

            // 使用inputStream读取文件
        } catch (FileNotFoundException e) {
            log.error(e);
        } catch (IOException e) {
            log.error(e);
        }
    }
    2抛出具体异常 

    你抛出的异常越具体越好,不熟悉你代码的同事或者几个月之后的你,可能需要调用你这些方法并进行异常处理,所以尽可能多的提供信息,让你的API更容易理解,比如能用NumberFormatException就不要用 IllegalArgumentException,绝对避免直接使用不具体的Exception类。

    //不建议
    public void doNotDoThis() throws Exception { ... }
    //建议
    public void doThis() throws NumberFormatException { ... }
    3做好注释/文档 

    只要你在方法声明异常,就需要做好Javadoc的注释。这点和上一条最佳实践有相同的目标:提供给调用者尽可能多的信息,便于避免异常或进行异常处理。所以请确保你在Javadoc中添加了"@throws"声明,并且描述了造成异常的情况。

    /**
    * This method does something extremely useful ...
    *
    @param input
    @throws MyBusinessException if ... happens
    */

    public void doSomething(String input) throws MyBusinessException { ... }
    4 异常携带可描述的信息 

    这条最佳实践和前面两条有点相似,但这条提供的信息不单是给方法调用者看的,而更多的是为了给记录日志或监控工具提供的,便于排查异常。实际上一般的异常类名就已经描述了问题的类型,你不必提供大量的附加信息,简洁凝练即可。比如NumberFormatException,当java.lang.Long构造函数抛出异常时会提供一句简短且清晰的文本来描述。

    try {
     new Long("xyz");
    catch (NumberFormatException e) {
     log.error(e);
    }

    NumberFormatException 的名字就已经告诉你异常的种类,它携带的信息仅告诉你提供的字符串会导致异常,但如果异常名字不能表达异常种类,就需要提供更多的信息。上述的异常信息如下

    17:17:26,386 ERROR TestExceptionHandling:52 - java.lang.NumberFormatException: For input string: "xyz"

    如果你仔细看下JDK的源码,就会清楚java.lang.Long在构造器中做了各种校验,当某些校验失败会调用NumberFormatException.forInputString,而静态方法forInputString会把java.lang.Long的构造参数格式化后再构造一个新的NumberFormatException实例并抛出

    /**
     * Factory method for making a NumberFormatException
     * given the specified input which caused the error.
     *
     * @param   s   the input causing the error
     */

    static NumberFormatException forInputString(String s) {
        return new NumberFormatException("For input string: \"" + s + "\"");
    }
    5 线捕捉子类异常 

    很多IDE都会帮助你进行最佳实践,如果你先捕捉父类异常再捕捉子类异常,它们会告诉你后面的代码不可到达或者警告已经被捕捉,因为是按照catch在在代码中顺序执行的。

    所以如果先捕捉IllegalArgumentException,将不能捕捉到其子类NumberFormatException,因此最佳时间是总是先捕捉更多信息的异常(子类),再捕捉父类。如

    public void catchMostSpecificExceptionFirst() {
        try {
            doSomething("A message");
        } catch (NumberFormatException e) {
            log.error(e);
        } catch (IllegalArgumentException e) {
            log.error(e)
        }
    }
    6 不要捕捉Throwable 

    从Java异常体系的图中可知,Throwable是所有异常(Exception)和错误(Error)的祖先,Throwable是可以被捕捉,但请不要捕捉。如果你捕捉了Throwable,那么不仅仅是捕捉了异常,还捕捉了错误。但错误是无法恢复,它是被JVM抛出的严重错误,应用程序对这类错误是无能为力的。

    //不要捕捉Throwable
    public void doNotCatchThrowable() {
        try {
            // do something
        } catch (Throwable t) {
            // don't do this!
        }
    }
    7 不要忽略异常 

    你是否记得曾几何时,在分析bug时遇到代码只执行了前半部分,但却不知为何。有些开发者经常捕捉了异常,但凭经验认为异常决定不可能发生,导致没有做异常处理。

    public void doNotIgnoreExceptions() {
        try {
            // do something
        } catch (NumberFormatException e) {
            // this will never happen,I'm sure!!
        }
    }

    实际上在大多数情况下它都发生了,因为随着时间和业务逻辑的变更,try代码块的内容变更了,导致了异常发生,而你的自信不仅害了你也害了后来人。建议catch中至少要留一条日志,来告知异常问题,方便排查。

    public void logAnException() {
        try {
            // do something
        } catch (NumberFormatException e) {
            log.error("This should never happen: " 
             + e + ",but I get a mistake!");
        }
    }
    8 不要在仅仅记录日志后向上抛出异常 

    “不要在仅仅记录日志后向上抛出异常”,这是最佳实践中最容易被忽视的一条。你会发现在大量的代码片段,甚至类库中经常捕捉异常、记录日志,然后抛出异常。

    try {
     new Long("xyz");
    catch (NumberFormatException e) {
     log.error(e);
     throw e;
    }

    直观的感觉是记录异常,然后抛出异常让调用者可以恰当的处理,但同一个异常多处日志记录,会让人迷惑,请参考第4条最佳实践:简洁凝练。

    17:44:28,945 ERROR TestExceptionHandling:65 - java.lang.NumberFormatException: For input string: "xyz"
    Exception in thread "main" java.lang.NumberFormatException: For input string: "xyz"
     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
     at java.lang.Long.parseLong(Long.java:589)
     at java.lang.Long.(Long.java:965)
     at com.stackify.example.TestExceptionHandling.logAndThrowException(TestExceptionHandling.java:63)
     at com.stackify.example.TestExceptionHandling.main(TestExceptionHandling.java:58)

    如果你真的需要给调用者提供更多信息,可以参考下一条最佳实践:包装异常。

    9 不消费包装异常 

    比较可取的做法是捕捉到标准异常,根据实际业务自定义包装异常再向上抛出。在包装异常时通常把原始异常作为构造参数传进来,否则会丢失栈的跟踪信息,造成分析困难。

    public void wrapException(String input) throws MyBusinessException {
     try {
      // do something
     } catch (NumberFormatException e) {
      throw new MyBusinessException("A message that describes the error.", e);
     }
    }

    总结

    fa9c25213f8ab7fc3de528612f6fbf86.png

    如你所见,当你处理异常或抛出异常是有许多要考虑的事情,大多是从代码的可读性和API可用性来考虑。因此,最好和同事一起讨论异常处理的最佳实践,从而达成共识、步调一致,不仅提高工作效率,还能避免不可预知的异常。

    c8c57af75704a277c38cf3fb9604333e.png

    0ae9ee2d0a682af529075acf6f2c9fac.png点个在看,赞?支持我吧a2680b8881c88ea48a4b61aec56c21fd.gif
    展开全文
  • 现在有一个题目是C++builder设计一个接口软件,不读取,只发送数据到电脑的一个固定接口上。 这个软件要求有显示频率和间隔频率。两个button分别加减间隔频率到显示频率上,然后将这个频率发送给电脑接口。 听起来...
  • 答案:只需点击上方《翔博软件工作室》价值的传播者,一路同行,一起成长免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号。公式源码看长,故引用了周线数据。一个太普通的MACD指标引用了周线数据。色带是...

    d3ac8c49ff5499aac0a3489a55c59486.gif

    问题怎样才能每天都收到这类文章!

    答案只需点击上方《翔博软件工作室

    做价值的传播者,路同行,一起成长

    免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号。

    公式源码

    看长,故引用了周线数据。

    一个太普通的MACD指标引用了周线数据。

    色带是周MACD,其他显示是平常的日线MACD。操作选票时只看周MACD红色多头的,再看看是否有题材风口点火,以日线MACD刚变红,DiF线零上为进场点。坚持下去正收益没问题的。

    看长做短安全第一!指标好不好关键看你怎么用了。

    指标需加上风口。加上市场地位。技术指标是为个股服务的。个股一定要看型态。而不是技术指标选个股。这个先后顺序很重要。

    周K:"MACD.DIF#WEEK"(12,26,9);

    周D:="MACD.DEA#WEEK"(12,26,9);

    DRAWBAND(周K,RGB(150,0,150),周D,RGB(0,100,200));

    DIF1:=(EMA(CLOSE,12)-EMA(CLOSE,26));

    DEA1:=SMA(SMA(SMA(DIF1,2,1),2,1),2,1);

    MACD1:(DIF1-DEA1)*2,NODRAW;

    A:MA(REF(HHV(DEA1,30),1),2),COLOREA91B5;

    W1:STICKLINE(MACD1>0,MACD1,0,0.6,0),COLORRED;

    W2:STICKLINE(MACD1<0,MACD1,0,0.6,0),,COLOR5C4F0E;

    DIF:DIF1,COLORWHITE;

    DEA:DEA1,COLORYELLOW;

    SSS:=(REF(DEA,1)-REF(DEA,2))+REF(DEA,1);

    IF(DEA>SSS,0,DRAWNULL),COLORYELLOW,DOTLINE;

    c5f5d052c65981859da03ce47dc84045.png

    “赤裸的‘贿赂’献给你!”

    一线天选股工具之新增一线天选股器3.0

    一、仅仅只作为辅助工具

    用来选出每天市场内新增的一线天筹码股,但仅仅只是一线天筹码体系的选股工具,并不能直接作为交易的参考,还行需要结合题材和市场情绪去做判断,到底应该以连板接力模式,还是回踩低吸模式参与。

    二、选股器的安装注意事项

    1.新增一线天选股器3.0是安装在通达信软件上使用的,版本没有太多要求,最普通的免费版通达信就可以。

    2.按照要求的步骤去导入安装,选股

    3.通达信选出每日新增一线天筹码股之后,要记得用同花顺软件去做一个验证,也就是说把通达信里选出的个股,重新输入到同花顺里,看一下一线天筹码是否标准,如果显示不标准,就判断为非新增一线天个股。

    6b1823cd45788efae2bf981da5bf81f3.png

    00b1462749f4519854465f24752b2e42.gif

    提供服务如下:

    1、转换 --- 根据客户提供的电脑板或者手机版技术指标源码,转换成自己的手机软件使用

    2、编写 --- 按照客户定制指标时“提供的编写要求”,制作技术指标

    3、修改 --- 按照客户“提供的修改要求”,修改技术指标

    00b1462749f4519854465f24752b2e42.gif

    一个聚百万原创指标公式小圈子

    原创价值分享企业微信群

    ID:xiangbosoft

    622111d2f2f5301132f4cfe7f22b2d2e.png

    c94b3d363f885096ec77d2ebabe88ce0.gif点击查阅更多经典指标                                                                     

    每天坚持分享不易请点在看支持?
    展开全文
  • 答案:只需点击上方《翔博软件工作室》价值的传播者,一路同行,一起成长免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号。公式源码本指标有未来函数,参考慎,不构成买卖依据,后果自负,祝你发财。...

    ed1dca474e8a861abea3c3bb49225633.gif

    问题怎样才能每天都收到这类文章!

    答案只需点击上方《翔博软件工作室

    做价值的传播者,路同行,一起成长

    免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号。

    公式源码

    本指标有未来函数,参考慎用,不构成买卖依据,后果自负,祝你发财。

    刚刚又翻了一下个股,这个指标在低位和首波龙回头以及二波龙回头都有不错的表现,唯一遗憾不能选股和预警出信号,

    钱来了源码:

    VAR1:="DMI.PDI"(12,6);

    VAR2:="DMI.MDI"(12,6);

    VAR3:=VAR1>65 AND VAR1>REF(VAR1,1);

    VAR4:=LLV(VAR1,0);

    VAR5:=BARSLAST(VAR4=VAR1);

    VAR6:=(0-REF(VAR2,4))/(VAR4-REF(VAR2,VAR5))>2;

    VAR7:=VAR1>REF(VAR1,1);

    VAR8:=VOL>2*MA(VOL,30);

    VAR9:="DMI.ADX"(12,6);

    VARA:="DMI.ADXR"(12,6);

    VARB:=CLOSE>MA(CLOSE,30) AND CLOSE

    VARC:=MA(CLOSE,30)>REF(MA(CLOSE,30),1);

    VARD:=BARSLAST(CROSS(MA(CLOSE,5),MA(CLOSE,10)))

    {VARE:=0-"MACD.DIFF"(7,21,3);}

    VARF:=TROUGHBARS(3,15,1)<4;

    VAR10:=EMA(CLOSE,30)>REF(EMA(CLOSE,30),2);

    VAR11:=IF(VARF=1,50,0);

    VAR12:=CROSS(VAR2,VAR1) AND CROSS(VARA,VAR9);

    VAR13:=CROSS(VAR2,VAR1) AND CROSS(VAR9,VARA);

    VAR14:=VARB AND VARC AND VARD AND VAR10 AND VAR6 AND VAR7 AND VAR8*50;

    VAR15:=BARSLAST(CROSS(VAR2,VAR1)=1);

    VAR16:=BARSLAST(CROSS(VAR1,VAR2)=1);

    VAR17:=HHV(VAR1,VAR16);

    VAR18:=BARSLAST(VAR1=VAR17);

    多空:EMA((CLOSE-MA((2*CLOSE+HIGH+LOW)/4,30))/MA((2*CLOSE+HIGH+LOW)/4,30)*100,3),COLORWHITE;

    0,COLORRED;

    STICKLINE(FILTER(VARF=1,5) AND 多空

    STICKLINE(FILTER(VARF=1,5),50,0,10,0),COLORRED;

    VAR19:=VAR3 OR VAR12 OR VAR13*100;

    VAR1A:=VAR13*100;

    DRAWICON(FILTER(VARF=1,3),50,1);

    DRAWTEXT(FILTER(VARF=1,3),25,'钱来了'),COLORYELLOW;

    STICKLINE(多空

    STICKLINE(多空>10,0,多空,1,0),COLORYELLOW;

    c2b5e826b68bb335f46219c20c6731a7.png

    “赤裸的‘贿赂’献给你!”

    一线天选股工具之新增一线天选股器3.0

    一、仅仅只作为辅助工具

    用来选出每天市场内新增的一线天筹码股,但仅仅只是一线天筹码体系的选股工具,并不能直接作为交易的参考,还行需要结合题材和市场情绪去做判断,到底应该以连板接力模式,还是回踩低吸模式参与。

    二、选股器的安装注意事项

    1.新增一线天选股器3.0是安装在通达信软件上使用的,版本没有太多要求,最普通的免费版通达信就可以。

    2.按照要求的步骤去导入安装,选股

    3.通达信选出每日新增一线天筹码股之后,要记得用同花顺软件去做一个验证,也就是说把通达信里选出的个股,重新输入到同花顺里,看一下一线天筹码是否标准,如果显示不标准,就判断为非新增一线天个股。

    f5a3e3bd2ee4fae8657c623746d38454.png

    12bc3e71f11e4edc20b48d9440e0f29a.gif

    提供服务如下:

    1、转换 --- 根据客户提供的电脑板或者手机版技术指标源码,转换成自己的手机软件使用

    2、编写 --- 按照客户定制指标时“提供的编写要求”,制作技术指标

    3、修改 --- 按照客户“提供的修改要求”,修改技术指标

    12bc3e71f11e4edc20b48d9440e0f29a.gif

    一个聚百万原创指标公式小圈子

    原创价值分享企业微信群

    ID:xiangbosoft

    bd0de4761e872ede105dbcb0afc86a14.png

    c4bd96eb4bd1de314a46617acc5e291c.gif点击查阅更多经典指标                                                                     

    每天坚持分享不易请点在看支持?
    展开全文
  • 答案:只需点击上方《翔博软件工作室》价值的传播者,一路同行,一起成长免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号。公式源码经传经典海洋寻底新版老酒装新瓶,经典指标总有它值得肯定的地方,就看...
  • 答案:只需点击上方《翔博软件工作室》价值的传播者,一路同行,一起成长免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号。公式源码趋势副图STICKLINE(C>0,0,10,5,0),COLOR00008A; STICKLINE(C>0,...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。 综上所述,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以...
  • C语言上机问题解答

    2014-08-30 21:34:19
    为了更加方便读者的使用本软件和节约读者宝贵的时间,特将读者使用软件后给我们反馈的问题处理办法总结如下,望读者能够从中找到解决方案。 1、上机抽题后,无法打开考生文件夹中的题文件,系统总是提示我没有...
  • C语言--第二周作业

    2017-10-08 14:49:00
    ****学习内容总结**** 1.Git和编辑器截图 2.MOOC截图 3.阅读《提问的智慧》感想 读完《提问的智慧》之后,我认为在提问时,要根据以下步骤: ...罗列最近过什么可能有影响的硬件、软件变更。 6.精准的语言...
  • C语言的模块化设计和面向对象编程

    千次阅读 2011-03-02 21:04:00
    既然书的主题是:怎样构建一个(稍具规模的)软件。且我选择 C 为实现工具来这件事情。就不得不谈语言还没有提供给我们的东西。 模块化是最高原则之一(在 《Unix 编程艺术》一书中, Unix 哲学第一条即:模块...
  • 编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验相关的阐述,不对的地方请各位指教。第 1 招:以空间换时间计算机程序中最大的矛盾是空间和时间的矛盾,那么从这个角度出发...
  • 在windows中,C语言代码的编译过程由IDE(如vc6、vs等软件)一键生成了可执行文件,但是我们知道编译过程有以下步骤: 预处理、编译、汇编、链接,于是我们可以在linux下命令来分别执行这些步骤,从而可以查看某步...
  • 软件测试经典面试题 (超实用)

    热门讨论 2012-02-16 13:48:08
    5、使用C语言编写一个函数,用于交换两个变量的值(地址传递)。 29 6、请简述DNS、活动目录、域的概念。 29 7、描述TCP/IP协议的层次结构,以及每一层中重要协议。 29 8、简述子网掩码的用途。 29 9、说出4种以上...
  • 瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名管理员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度 超过一...
  • 滴滴一面面经

    2017-09-05 19:41:36
    1、 c语言与c++的内存管理 2、 tcp、udp的区别,tcp怎样处理... (笔者使用暴力解决,但是面试官意思是这样时间复杂度高,问有没有其他的方法,我当时确实没想起来,说没有,后来来实验室之后,实验室的大神说km
  • 1.2 怎样用C语言编程 7 1.3 printf()函数初步 13 1.4 C语言的“字母”和“单词” 14 第2章 数据类型 23 2.1 什么是数据类型 24 2.2 让程序记住计算结果——变量 31 2.3 int类型——总结与补充 35 2.4 对数据...
  • 08-music -- 用C语言演奏生日快乐歌,使用软件定时。使用软件定时演奏生日快乐歌。P8纵向连接上面2个。 09-musicasm -- 用汇编语言演奏一首民歌,使用硬件定时。主要学习51定时器汇编语言编写中断功能,和如何编写...
  • 电子设计.doc

    2019-05-28 11:58:28
    0086、单片机实现温度远程显示论文资料 0087、远程温度控制系统毕业设计论文资料 0088、正弦信号发生器毕业设计论文资料 0089、智能风扇调速系统毕业设计资料 0090、智能台灯设计资料 0091、智能温度报警系统毕业...
  • 怎样使用点阵取模软件来处理相关数据,从而简化程序设计工作量。 第十七课 DS1302实时时钟与SPI接口通信原理 目前应用最为广泛的实时时钟器件当属DS1302。 在本课程中以DS1302为代表,具体讲解SPI总线通信原理,...
  • Linux内核注释

    2012-08-21 20:18:39
    在附录中还包含了被内核用做软件许可证的完整的GNU常规公众许可证。最后,本书为你提供了一个索引。通过该索引你可以查询术语或主题。这将让你更快更有效的使用这本参考工具书。 本书的使用对象 本书假设你能阅读...
  • 搁置了一年多,一个专注于面试,计算机基础,算法,通用类入门教程的网站终于上线了,致力于全网质量最高的编程网站,目前正在疯狂输出中.... 欢迎各位小伙伴来我的网站玩耍呀,地址:https://www.iamshuaidi.com...
  • 此外,本书开始两章篇幅详细介绍了中英文面试的注意事项、常见问题及程序员的职业规划等软件工程师的常识。最后四章详细讲解了现在流行的智力测试题。 第一篇 求职 第1章 应聘求职 1.1 企业与人才 1.1.1 企业需要...
  • 笔者试图 鸿蒙源码分析系列篇 【 CSDN | OSCHINA | WIKI 】 去构建这一层级的认知,希望能卷入更多对内核感兴趣的应用软件人才流入基础软件生态, 应用软件咱们是无敌宇宙,但基础软件却很薄弱. 第三: 具体微观代码级...
  • 在附录中还包含了被内核用做软件许可证的完整的GNU常规公众许可证。最后,本书为你提供了一个索引。通过该索引你能查询术语或主题。这将让你更快更有效的使用这本参考工具书。 本书的使用对象 本书假设你能阅读...
  • 《linux内核注释》

    2006-12-22 15:46:12
    还包含了被内核用做软件许可证的完整的GNU常规公众许可证。最后,本书为你提供了一个索 引。通过该索引你可以查询术语或主题。这将让你更快更有效的使用这本参考工具书。 本书的使用对象 本书假设你能阅读C语言...
  • 怎样才能有自己的系统边框的C#窗体呢? 我想就是有几年工作经验的程序员,也会觉得那是很麻烦的事。那么,为什么不把这个工作封装成一个控件呢? 下面,是我自己根据以往的经验,了一个自定义系统边框控件...
  • 代码语法错误分析工具pclint8.0

    热门讨论 2010-06-29 07:00:09
    PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效率的提升,但...
  • Nehe的OpenGL教程电子书

    2018-04-07 12:25:03
    你知道大名鼎鼎的Milkshape3D建模软件么,我们将加载它的模型,当然你可以加载任何你认为不错的模型。 32.拾取, Alpha混合, Alpha测试, 排序 这又是一个小游戏,交给的东西会很多,慢慢体会吧 33.加载压缩...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

怎样用c语言做软件

c语言 订阅